Scientific journal
Название журнала на английском

no name 1 no name 1
1 work

Введение и постановка задачи

Случайные числа нашли широкое применение в различных областях, включая науку, технику, экономику, социологию, медицину и педагогику [1-4]. Их использование особенно ценно для моделирования явлений, трудных или невозможных в реальной практике. Примерами служат исследования взаимодействия элементарных частиц, операции в хаотичных условиях аэропорта, и прогнозирование развития человеческой цивилизации.

Случайность играет ключевую роль в принятии стратегических решений и проявляется в музыке и графических изображениях. В этом контексте, генерация случайных чисел становится важным элементом в прикладной математической статистике, особенно при работе с выборками [5,6]. Это имеет применение в методе Монте-Карло, имитационном моделировании [7], математическом моделировании [8] и др.

Генераторы случайных чисел с равномерным распределением получили широкое распространение [1] и служат основой для получения чисел с различными распределениями, включая нормальное [2,4,9]. Анализ возможности генерации нормального распределения имеет практическое и теоретическое значение, и именно этой проблеме посвящена настоящая работа.

Анализ последних исследований и публикаций

Самый простой метод основан на использовании предельной теоремы А.М. Ляпунова [9]. Рассмотрим множество случайных чисел с равномерным распределением на отрезке [0; 1]: u1, u2,..., un. Вероятность того, что случайная величина Х = (u1 +u2+... +un) / √(n/12) при n, стремящимся к бесконечности, будет меньше значения х, соответствующего нормальному распределению, определяется функцией Лапласа

missing image file (1)

Для генерирования нормально распределённых чисел рекомендуется брать значение n, равным 6 или 12. Недостатком метода является довольно большое отклонение вычисленных значений Х, находящихся “на хвостах распределения” [10]. На практике чаще обращаются к методу, разработанному Д. Боксом, М.Мюллером и Д. Марсальей, и другим методам [1, 10, 11]. Все предлагаемые алгоритмы обеспечивают преобразование чисел с равномерным законом распределения в нормально распределённые. Современные программные средства (например, Matcad, Visual C++ и другие) позволяют решать подобную задачу с использованием стандартных программ. В связи с раннее указанным недостатком преобразования на основе предельной теоремы А. М. Ляпунова [9] рассмотрим только три алгоритма генерирования нормально распределённых чисел:

- метод полярных координат Бокса-Мюллера-Марсальи [1],

- метод полярных координат Бокса-Мюллера [11],

- стандартные программные средства из среды программирования Visual C++ [12].

Цель выполнения работы и постановка задачи

Цель работы является проведение сравнительного анализа различных методов преобразования чисел с равномерным распределением в случайные числа, подчиняющиеся нормальному закону, формула (1). Для достижения цели было необходимо решить следующие задачи:

- расписать алгоритм преобразования чисел с равномерным распределением в случайные числа, подчиняющиеся нормальному закону (1);

- выбрать критерий для проверки гипотезы о соответствии преобразованных случайных чисел нормальному закону;

- разработать расчётную программу в среде программирования Visual C++ для оценки проведения сравнительного анализа результатов, полученных различными методами;

- провести тестовые испытания.

Результаты работы

Алгоритм полярных координат Д. Бокса, М. Мюллера и Д. Марсальи, (в дальнейшем метод БММ), изложен в работах [1, 10]. Он предусматривает пошаговое выполнение следующих операций.

1. С помощью генератора равномерно распределённых чисел на отрезке [0;1] получают два случайных независимых числа r1 и r2.

2. Вычисляется значение параметра

missing image file

3. Если S ≥ 1, повторяется операция в первом пункте.

4. Рассчитываются два числа

missing image file

missing image file (2)

Формулы (2) обеспечивают получение двух независимых и нормально распределённых чисел z1 и z2 с дисперсией, равной 1, и нулевым математическим ожиданием.

Видоизменённый алгоритм Д. Бокса и М. Мюллера [11], (в дальнейшем метод БМ). На первом этапе получают два независимых случайных числа r1 и r2, которые равномерно распределены на отрезке [0;1]. Далее они преобразуются в два нормально распределенных значения z1 и z2 по формулам Бокса-Мюллера:

missing image file

missing image file. (3)

Формулы (3), как и формулы (2), обеспечивают получение двух независимых и нормально распределённых чисел z1 и z2 с дисперсией, равной 1, и нулевым математическим ожиданием, т.е. в первом приближении соответствуют нормальному распределению, определяемую функцией Лапласа (1).

Для получения нормального распределения с другим среднеквадратическим отклонением σ и другим математическим ожиданием а необходимо значения z1 и z2 умножить на σ и к полученным величинам прибавить а.

Метод генерирования нормально распределённых чисел в среде программирования Visual C++ [12], (далее метод Normal_distribution).

При реализации нормально распределённых чисел в среде Visual C++ в программе необходимо подключить библиотеку <random>, которая содержит различные генераторы. В разрабатываемой программе использовался генератор random_device, который в отличие от стандартного генератора rand обладает большим диапазоном. Многократный вызов функции

normal_distribution<double>norm(0,1)

обеспечивает генерирование нормально распределённых случайных чисел с нулевым математическим ожиданием и единичным среднеквадратическим отклонением.

Проверка гипотезы о соответствии случайных чисел закону нормального распределения. Проверка гипотезы о выполнении закона нормального распределения проводилась с использованием χ2-критерия Пирсона. Выборки объёмом n = 100 формировались с использованием трёх вышеописанных методов среднеквадратическим отклонением σ и другим для математического ожидания а = 0 и среднеквадратического отклонения σ = 1. Поскольку большая часть случайных чисел лежит в пределах (3-6)σ, учитывались только значения на отрезке [-4,+4], где находится более 99,99% от общего количества [13].

Критерий Пирсона обладает v = s – 3 степенями свободы, где s – число интервалов. Критическая область определяется неравенством χ2>χ2кр(α,v), где α – уровень значимости. Критическое значение χ2кр для α = 5%, v = 6 равно 16,8 [3]. При χ2<16,8 гипотеза о нормальности выборки принимается, в противном случае отвергается. Результаты обработки статистических данных, полученных различными способами представлены в табл. 1 (метод БММ), табл. 2 (метод БМ) и табл. 3 (метод Normal_distribution).

Критерий Пирсона χ2 для данных табл.1 равен 9,622. Поскольку полученное значение меньше критической величины χ2кр=16,8 для 5%-го уровня значимости при 6 степенях свободы [3], то гипотеза о нормальности выборки в случае использования метода Д. Бокса, М. Мюллера и Д. Марсальи принимается.

Рассчитанныйкритерий Пирсона для данных табл. 2 равен 13.651. Полученное значение меньше критической величины χ2кр=16,8 в случае 5%-го уровня значимости при 6 степенях свободы [3]. Поэтому гипотеза о нормальности выборки, сгенерированной методом Д. Бокса и М. Мюллера, принимается.

Таблица 1

Результаты проверки гипотезы о соответствии случайных чисел, генерированных методом БММ, нормальному закону распределения: хi – середина i-го интервала, ni – количество сгенерированных чисел в i-м интервале, n’i – теоретическое значение случайных величин в i-м интервале

i

1

2

3

4

5

6

7

8

9

хi

-3.56

-2,67

-1,78

-0,89

-0,00

0,89

1,78

2,67

3,56

ni

0

1

6

20

33

24

13

3

0

n’i

0.06

1

7.27

23.87

35.46

23.87

7.27

1

0.06

Таблица 2

Результаты проверки гипотезы о соответствии случайных чисел, генерированных методом БМ, нормальному закону распределения: хi – середина i-го интервала, ni – количество сгенерированных чисел в i-м интервале, n’i – теоретическое значение случайных величин в i-м интервале

i

1

2

3

4

5

6

7

8

9

хi

-3.56

-2,67

-1,78

-0,89

-0,00

0,89

1,78

2,67

3,56

ni

0

1

3

18

32

35

8

3

0

n’i

0.06

1.03

7.48

24.54

36.46

24.54

7.48

1.03

0.06

Таблица 3

Результаты проверки гипотезы о соответствии случайных чисел, генерированных методом Normal_distribution, нормальному закону распределения: хi – середина i-го интервала, ni – количество сгенерированных чисел в i-м интервале, f(xi) – значение функции Лапласа в точке xi, n’i – теоретическое значение случайных величин в i–м интервале

i

1

2

3

4

5

6

7

8

9

хi

-3.56

-2,67

-1,78

-0,89

-0,00

0,89

1,78

2,67

3,56

ni

0

4

6

28

35

21

5

1

0

n’i

0.06

1.03

7.48

24.54

36.46

24.54

7.48

1.03

0.06

Критерий Пирсона, вычисленный по формуле (4) для данных табл. 3, равен 11,065. Он намного меньше критической величины χ2кр=16,8 в случае 5%-го уровня значимости при 6 степенях свободы [3], что позволяет принять гипотезу о нормальности выборки, полученной в среде программирования Visual C++ методом Normal_distribution.

Выводы

Все представленные нам ранее методы генерации случайных чисел подчиняются Критерию Пирсону, что без условно нам говорит о их нормальности. Проведя анализ более точным является метод БММ, также очень хорошо себя проявил метод БМ, что касается метода Normal_distribution он конечно точнее чем метод БМ, но он не всегда точно срабатывает, иногда генерируются такие числа, что не подчиняются Критерию Пирсона. Метод Normal_distribution хоть и есть у него такой большой минус, есть также большой плюс это его простота использования, где вместо того что бы расписывать формулы как в ранее указаных методах можно просто написать команду и указать мат. ожидание и отклонение. То есть в качестве учебных целей для ознакомления, очень хорошо подойдет метод Normal_distribution. Но если надо для статьи, каких-нибудь вычислений, то тут хорошо себя покажут методы БМ и БММ.