Перейти к содержанию

ПсевдоРандом


botka4aet

Рекомендуемые сообщения

Для 1000чи случаев надо выбросить число 0-2. Тк это будет нагружать сервер, то велика ли будет погрешность, если разбить 1000 на 100х9+10х9+1х10? :unsure:

Ссылка на комментарий
Поделиться на другие сайты

О чём речь?

О скрипте для афины, который в стандартном формате будет делать 1000 операций для одного игрока за одну секунду

Ссылка на комментарий
Поделиться на другие сайты

for (set @i,0; @i < 1000; set @i,@i+1) {
set @play,@play+rand(0,2)
}

и

for (set @i,0; @i < 900; set @i,@i+100) {
set @play,@play+rand(0,2)*100;
}
for (set @i,0; @i < 90; set @i,@i+10) {
set @play,@play+rand(0,2)*10;
}
for (set @i,0; @i < 10; set @i,@i+1) {
set @play,@play+rand(0,2);
}

Ссылка на комментарий
Поделиться на другие сайты

:huh: ниочем.в чем цель.я лично не понял.

Аналогично. Ещё я не понял зачем здесь умножение, когда значения должны быть от 0 до 2.

Ссылка на комментарий
Поделиться на другие сайты

Кратко

2 игрока, каждый кидает "Кубик" 1000 раз. Грани "Кубика" - 0,1,2.

У кого выпадет в сумме большее число - тот победил.

Ссылка на комментарий
Поделиться на другие сайты

botka4aet, не понимаю зачем так извращаться, потому что Ваш код аналогичный одной строке:

set @play, rand(0,2000);

Вы просто подумайте в каком диапазоне будет выходное число с Вашего скрипта и с моего.

Изменено пользователем Functor
Ссылка на комментарий
Поделиться на другие сайты

for (i=0; @i < 1000; @i++) set @play,@play+rand(2)

чем не устраивает?

UPD:

botka4aet, не понимаю зачем так извращаться, потому что Ваш код аналогичный одной строке:

set @play, rand(0,2000);

Вы просто подумайте в каком диапазоне будет выходное число с Вашего скрипта и с моего.

не верно.Будет слишком большой диапазон значений для 1000 бросков одинаково кубика.

Изменено пользователем kadze
Ссылка на комментарий
Поделиться на другие сайты

for (i=0; @i < 1000; @i++) set @play,@play+rand(2)

чем не устраивает?

Такой тип кода в скрипте можно использовать начиная с ревизии r15982

Ссылка на комментарий
Поделиться на другие сайты

не верно.Будет слишком большой диапазон значений для 1000 бросков одинаково кубика.

Диапазон выходного числа будет такой же. От 0 до 2000.

Ссылка на комментарий
Поделиться на другие сайты

botka4aet, не понимаю зачем так извращаться, потому что Ваш код аналогичный одной строке:

set @play, rand(0,2000);

Вы просто подумайте в каком диапазоне будет выходное число с Вашего скрипта и с моего.

Я просто со школы помню график, который мы чертили.

Что-то подобное

normal.gif

Поэтому предложенное округление будет слишком сильным.

for (i=0; @i < 1000; @i++) set @play,@play+rand(2)

1 - Ревизия 15667, 2 - все равно ведь будет считать 1000 раз

Ссылка на комментарий
Поделиться на другие сайты

Я просто со школы помню график, который мы чертили.

Что это за график?

Поэтому предложенное округление будет слишком сильным.

Какое еще округление? :blink:

Набросал я Ваш алгоритм на С++ и прокрутил его 1 миллион раз.

Во время теста я фиксировал самое маленькое число и самое большое.

Минимальное число: 863

Максимальное число: 1126

Так что Вам мешает использовать rand(800,1200) и не создавать себе проблемы?

Ссылка на комментарий
Поделиться на другие сайты

Минимальное число: 863

Максимальное число: 1126

Так что Вам мешает использовать rand(800,1200) и не создавать себе проблемы?

Потому что правила игры указаны выше.

Ссылка на комментарий
Поделиться на другие сайты

Так что это Вы за график приводили в пример? И причем там округление?

Правила правилами. Для игрока "кидание кубика 1000 раз" в любом случае остается за занавесом. Он этого не оценит. Так что зря Вы прицепились к этому алгоритму.

Если погрешность у Вас заключается в разбросе, то вот статистика для двух алго:

for (set @i,0; @i < 1000; set @i,@i+1) {
set @play,@play+rand(0,2)
}

Минимальное число: 868

Максимальное число: 1116

for (set @i,0; @i < 900; set @i,@i+100) {
set @play,@play+rand(0,2)*100;
}
for (set @i,0; @i < 90; set @i,@i+10) {
set @play,@play+rand(0,2)*10;
}
for (set @i,0; @i < 10; set @i,@i+1) {
set @play,@play+rand(0,2);
}

Минимальное число: 37

Максимальное число: 1947

При сборе каждый алгоритм прокрутил 1 миллион раз.

Изменено пользователем Functor
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика