![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как проверить генератор случайных чисел [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]
> как проверить, что он действительно случайный
"В этом мире случайностей нет.."(с) МВ