Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];

Вниз

Насколько случайна 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.029 c
14-1099575334
Григорьев Антон
2004-11-04 16:35
2004.11.28
Теперь и я в шоке. Снова про образование


14-1100172167
Ega23
2004-11-11 14:22
2004.11.28
Я вернулся.


14-1100150947
novice_man
2004-11-11 08:29
2004.11.28
Destroy or Free


8-1093707276
Anderson
2004-08-28 19:34
2004.11.28
Как сохранить TBitmap, как TIcon?


10-1066370827
Debutant
2003-10-17 10:07
2004.11.28
Где скачать надежную orbpas45.dll





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский