Теоретическая часть

 

Хороший арифметический генератор случайных чисел должен обладать следующими свойствами:

1) Получаемые числа должны быть равномерно распределены в интервале [0,1] и не должны иметь корреляции друг с другом, в противном случае результаты моделирования могут оказаться полностью недействительными.

2) Чтобы генератор можно было использовать на практике, он должен обладать быстродействием и не требовать больших затрат памяти.

3) Генератор должен обеспечивать возможность точно воспроизводить заданный поток случайных чисел.

4) В генераторе должен быть предусмотрен простой способ получения отдельных потоков случайных чисел. Поток — это просто часть последовательности случайных чисел, производимых генератором, очередной поток начинается в том месте, где заканчивается предыдущий.

 

Одной из исторически первых процедур получения псевдослучайных чисел была процедура, получившая название метода серединных квадратов, который был предложен фон Нейманом и Метрополисом в 1940-х годах.

 

Алгоритм получения последовательности случайных чисел методом серединных квадратов сводится к следующему:

 

Пусть имеется 2n - разрядное число, меньше 1:

 
 


возведем его в квадрат:

,

а затем возьмем средние 2n разрядов:

,

которые и будут очередным числом.

 

Например:

     
 
 
 
 
 

 

 


и т.д.

Недостатком этого метода является наличие корреляции между числами последовательности, а в ряде случаев случайность вообще может отсутствовать.

 

Например:

   
 
 
 

 

 


Метод срединных квадратов вовсе не является случайным, то есть непредсказуемым (это наиболее существенный его недостаток). На самом деле, если мы знаем одно число, следующее число является полностью предопределенным, по­скольку правило его получения неизменно. Фактически, когда задается x0, предопределяется вся последовательность чисел xi. Это замечание касается всех арифметических генераторов.