Качественный генератор случайных чисел
Аннотации
Аннотация
Многочисленные приложения в физике и технике используют генерацию случайных чисел: для методов Монте-Карло, распределения ключей и других задач. Для этих целей были разработаны сложные хеш-функции с тщательно изученными и настроенными алгоритмами, дающие псевдослучайные числа. В зависимости от сложности и качества выходных данных они варьируются от алгоритмов с очень хорошим качеством (например, RANLUX с периодом повторения 10171) до быстрых, однако с меньшим периодом (например, Mersenne Twister, примерно в 40 раз быстрее). Мы представляем реализацию алгоритма «умножения» истинно случайных чисел. Алгоритм опирается на конечный набор истинно случайных чисел из физического источника (в нашем случае 0,2 млн случайных чисел атмосферного шума в диапазоне 0–9999). Алгоритм выдает новые числа путем объединения пар из двух случайных чисел из списка, находящихся на случайном расстоянии друг от друга. Случайное смещение вычисляется структурой сдвигового регистра, включающей как локальный генератор rand(), так и числа из самого списка, посредством чего он производит «неповторяющиеся повторения» — т. е. наш множитель не имеет известного периода. Тесты, проведенные с помощью тестового набора DieHarder, показывают высокое качество.

