Текущий архив: 2004.11.28;
Скачать: CL | DM;
ВнизНасколько случайна Random Найти похожие ветки
← →
starter (2004-11-11 10:20) [0]Помню раньше где проскакивала инфа, что функция random на самом деле не случайна, что-то типа в длительном цикле вызов randomize и random выстраиваются в повторяющуюся последовательность. Это в самом деле так? Если да, то как правильно реализовать настоящий и быстрый генератор случайных чисел.
← →
Семен Сорокин © (2004-11-11 10:23) [1]дык, randomize в цикле вызывать не надо, его один раз нужно вызвать - при запуске.
From Help:
Do not combine the call to Randomize in a loop with calls to the Random function. Typically, Randomize is called only once, before all calls to Random.
← →
Reindeer Moss Eater © (2004-11-11 10:23) [2]Она псевдослучайна
Если да, то как правильно реализовать настоящий и быстрый генератор случайных чисел.
Над этим бьются целые софтварные компании с переменным успехом.
← →
starter (2004-11-11 10:49) [3]про Randomize я в курсе что до цикла надо, но непонятки все равно имеются. Допустим есть бесконечный цикл, длится может часами/сутками, пока юзер не прервет, в нем иногда в зависимости от ситуации вызывается Random, т.е. не в каждом шаге цикла. Тогда в данном случае когда вызывать Randomize, до входа в бесконечный цикл? Т.е. на сколько далеко распространяется действие randomize в кодовом и временном измерениях?
← →
Reindeer Moss Eater © (2004-11-11 10:51) [4]На время существования процесса распространяется
← →
Smithson (2004-11-11 10:56) [5]Ramdomize задает "случайным образом" первый элемент последовательности, которую потом генерит Random.
То есть Random есть просто некая хитрая функция, которая из опорного числа и входного параметра генерит другое число. Если Randomize не использовать, то генерируемая последовательность будет всегда одна и та же.
Randomize задает "случайным образом" это самое значение опорного числа. Причем делать это можно чаще, чем раз в жизни, надо просто понимать, что делаешь. "Случайным образом" означает, что некий алгоритм все же есть, но предугадать или воспроизвести его сложно. Скорее всего, в качестве опорного числа ставиться число милисекунд после включения компьютера, или число тактов процессора, или еще что-то сложноповторяемое.
Теперь, глядя на свой алгоритм и прочитав это, реши, как часто тебе надо вызывать Randomize.
← →
starter (2004-11-11 11:18) [6]ага, значит таки для чистоты случайности имеет смысл randomize вызывать внутри цикла. Но у меня критично по скорости, программа расчетная, если интерсно посмотрите http://optytrace.100free.com. Пытаюсь вот разобраться, стоит ли искать другую реализацию random?
← →
TUser © (2004-11-11 11:23) [7]
> Пытаюсь вот разобраться, стоит ли искать другую реализацию
> random?
Для серьезных вещей (типа генерации паролей) - безусловно. Для фигни - годится и Random. См. 3й том Кнута (или 2й - не помню), там много хорошего написано.
← →
Jeer © (2004-11-11 12:52) [8]starter (11.11.04 11:18) [6]
>ага, значит таки для чистоты случайности имеет смысл randomize вызывать внутри цикла
Нет, качество генератора определятся совсем другими параметрами.
Для увеличения длины псевдослучайной последовательности целесообразно использовать генератор с большим числом состояний.
← →
wnew © (2004-11-11 13:07) [9]Можно неплохо обходиться функцией Random, если заданый диапазон цифр заносить в случайно выбераемые ячейки массива, а затем также случайно выбирать уже элемент этого массива и использовать значение, хранящееся в этой случайно выбраной ячейке.
Страницы: 1 вся ветка
Текущий архив: 2004.11.28;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.041 c