Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как проверить генератор случайных чисел [D7, WinXP]


Multy ©   (2004-09-07 10:30:00) 

Есть программа которая в процессе работы использует встроенный генератор случайных чисел как проверить, что он действительно случайный.
По институту помню были какие то методы...


Koala   (2004-09-07 11:48:00) [1]

Не знаю точное условие задачи применения случайных чисел, но в клиент-банках (точно не скажу как) используется генератор случайных чисел совместно с движением мыши по экрану, генератор задает интервал при котором считываются координаты экрана и это более вероятность получения массива случайных чисел.


Romkin   (2004-09-07 11:37:00) [2]

Критериев полно. Возьми второй том Кнута, посмотри. Там они описаны. Но проверять генератор надо не на все критерии, а на нужные. А для этого надо знать, для чего нужен программе этот генератор. Одно дело - колоду карт перемешать, другое - найти методом Монте-Карло значение кратного интеграла. Во втором случае, кстати, прове6рка проще :)
А код генератора есть?


Jeer   (2004-09-07 11:32:00) [3]

В основе методов генерации "случайных" последовательностей с заданным распределением лежат, как правило" генераторы с равномерным распределением.
Если не оттестирован равномерный, то тестировать производный сложнее, да и неверно.


lehich   (2004-09-07 11:30:00) [4]

initialization
randomize;

????????? может так????


Рамиль   (2004-09-07 11:25:00) [5]

А с чего это распределение должно быть равномерным? Оно у Random равномерно. А программа может генерировать для себя любое распределение. Равномерность не может быть критерием случайности.


Jeer   (2004-09-07 10:57:00) [6]

Поищи описание тестов DIEHARD. Это стандарт на сегодня для проверки "случайности" генераторов.


TUser   (2004-09-07 10:48:00) [7]

Я бы сказал, что распределение получаемого ряда чисел д.б. равномерным, а также равномерным д.б. распределение разниц между двумя последовательно полученными числами (некоторая гарантия независимости ряда, хотя, насколько я понимаю, все подобные ряды марковские и в той или иной степени каждое число зависит от предыдущего). Равномерность распределения проверяют по хи-квадрату.


Multy   (2004-09-07 10:45:00) [8]

Ну и что из того, что псевдослучайный?
А проверить точно можно, хотябы примитивныой статистикой,
но на сколько я помню, есть конкретные методы с критериями и т.д.


Digitman   (2004-09-07 10:42:00) [9]


> Multy


если тебе необходимо виз.представление распределения, то организуй 2-мерный integer-массив, в котором № элемента - это "случайное" число в диапазоне, не превышающем границы массива, а значение этого эл-та массива ты будешь увеличивать на 1-цу всякий раз, когда генератор выдаст очер.число, совпадающее с номером этого элемента

в цикле "от забора и до обеда" получай "случйное" число, ищи соотв.элемент массива и инкрементируй найденный элемент

после завершения цикла любым удобным способом визуализируй массив в виде столбчатого графика, где по оси Х - "случайные" числа, а по оси Y - кол-ва "выпадений" каждого из этих чисел


Боян Георгиев   (2004-09-07 10:41:00) [10]

Можно проверить так:
Выполни Random(1000) 1000 разов и считай числа в 10 интервалам (1..100, 101..200, ..., 901..1000) и если счет в десетях интервалов равной, то генератор действительно случайный.


TUser   (2004-09-07 10:37:00) [11]

Он не случайный. Он псевдослучайный. Но ты можешь проверить получаемую послеждовтаельность чисел на соотвествие предъявляемым требованиям, например равномерность распределения и пр.


Digitman   (2004-09-07 10:35:00) [12]


> как проверить, что он действительно случайный


"В этом мире случайностей нет.."(с) МВ


Наверх

Титульная страница Поиск, карта сайта Написать письмо