Просмотреть всю тему "На сколько случаен генератор случайных чисел." »»
Re: На сколько случаен генератор случайных чисел.   ID:49285   ответ на 49275 Пн, 16 декабря 2002 01:00 [#]
Лох Чилийский Форумы Покер.ру
Гы... Каждый раз - косяк может получиться.
Общая идея мультипликативного ГСЧ:
Берем начальное число и множим его на мультипликатор, от получившегося числа берем
несколько разрядов. Следующий раз уже предыдущее получившееся число множим на тот же
мультипликатор. При грамотном выборе мультипликатора получаем псевдослучайную
последовательность с.в. Чтобы последовательность не получалась одной и той же, при
генерации следующей последовательности с.в. берем несколько иное начальное число (обычно
делается сдвиг от некоторой константы путем добавления значения таймера не влияющего на
порядок числа) и множим, множим, множим, до тех пор пока нам нужны псевдослучайные числа.

Если для получения каждого нового числа заново инициировать ГСЧ (выбирать новое начальное
число), то налицо будет зависимость последовательности от показаний таймера. Т.е. наложение
частот генерации с.ч. с частотами таймера дадут АБСОЛЮТНО не имеющую ничего общего с
псевдослучайной последовательность.

P.S. Выше приведено крайне общее описании принципа работы ГСЧ. За подробностями
рекомендую обращаться к Кнуту, например. Самостоятельный выбор мультипликатора
нежелателен, существуют зарекомендовавшие себя значения. Смотрим исходники Borland C++,
опять же например.
P.P.S. Код ГСЧ содержит намного меньше знаков чем данный пост.