Программирование > Теория, алгоритмы и стандарты
Генератор псевдослучайных последовательностей.
Макс:
задача :
нужно генерировать случайное число 1 из 7 (на самом деле задача более обширная 2 из 9, 3 из 10 и т.д., но проблема именно с 1 из 7). Реализация на php:
Если использовать mt_rand(1, 7); то при большом числе повторов :
for($i=0; $i < 100; $i++) {
echo mt_rand(1, 7)."\\n";
}
можно заметить что сравнительно часто числа последовательно повторяются. Например у меня только что была такая цепочка:
--- Код: ---3 5 5 5 3 3 3 1
--- Конец кода ---
Есть какие-то идеи/алгоритмы генераторов псевдослучайных чисел в которых бы такие повторы были не такими частыми. Не то, чтобы их совсем не было, но были бы как можно реже.
Вариант с запоминанием последнего сгенерированного числа и проверкой при последующем генерировании очень не хочется делать.
ЗЫ
Я пока что плохо знаком с математикой генераторов псевдослучайных последовательностей, поэтому если я многого хочу - так и скажите.
КшЫуфксрук:
А у меня выпало "7 7 7 4 4 4 4". Ну значит судьба такая. Если это не повторяется каждый раз, то все нормально. А двойки вообще должны очень часто выпадать, ведь вероятность того, что следующее число будет равно предыдущему, равна 1/7.
Макс:
дело в том что частенько выпадают такие последовательности:
1 4 4 5 6 6 2 4 1 1
То есть часто идут несколько цифр подряд - и мне такая "закономерность" ну очень не нравится.
Пока единственное что могу придумать: запомнить последнее сгенерированное число, при следующей генерации если новое число совпало со старым - генерируем новое число (его уже не проверяем) и запоминаем его.
Мне этот вариант кажется кривым, но ничего умнее пока в голову не приходит.
Xander:
а может попробовать генерить md5 хэш от значения time()?
не то, чтобы я пробовал, но по идее может помочь...
КшЫуфксрук:
Тебе нужно случайную последовательность или неповторяющуюся. Если случайную, то оставь как есть. Пары одинаковых чисел должны выпадать часто, чаще чем казалось бы они должны. Или объясни что тебе нужно сделать.
Навигация
Перейти к полной версии