Генерация случайных чисел
Как найти площадь кляксы?
Метод Монте-Карло Sф = (x 2 – x 1)·(c 2 – c 1)·M/N x = x 1 + (x 2 – x 1)·t; y =c 1 + (c 2 – c 1)·t t – из отрезка [0, 1]
Задача случайного выбора числа из отрезка [0, 1]: • Как равномерно распределить (разложить по ячейкам) N точек на отрезке [0, 1]? s 1 s 2 … sn-1 sn s 1 + s 2 +. . + sn-1 + sn = N • Как сделать, чтобы ячейка каждый раз выбиралась не по какому-нибудь определенному алгоритму или правилу, а лишь по воле «Его Величества Случая» ?
Опыты с бросанием монеты № 1 Результаты бросания монеты (100 х 9 раз) «орел» - 1, «решка» - 0 1 0 0 1 1 0 0 0 1 2 0 0 1 1 0 1 0 … … … … … 99 1 1 0 0 100 0 1 1 0 0 0
Системы счисления • 0, 1, …, g-1 – цифры в g-ичной системе счисления, g>1 • abcg=a·g 2+b·g 1+c (a, b и c – g-ичные цифры • g-ичная дробь: 0, 013= 0/3+1/32 = 1/9 • Пример записи числа 45 в двоичной системе счисления: 45=32+8+4+1= =1· 25+0· 24+1· 23+1· 22+0· 21+1= 101101
Метод триад 101 111 010 101=1· 22+0· 21+1=5 111=1· 22+1· 21+1=7 010=10=1· 21+0=2 Получилось число в восьмеричной записи: 5728 (в десятичной системе это будет 5· 82+7· 8+2=378).
Метод триад (продолжение) Результаты должны попадать в отрезок [0, 1], поэтому мы разделим их на число 10008=83=512 Получатся восьмеричные дроби вида: 0, abc 8 Например, 0, 7778=7/8+7/64+7/512≈0, 998 0, 5728=5/8+7/64+2/512≈0, 738
Алгоритм деления пополам 1. 2. 3. 4. 5. 6. a: =0; b: =1 I: = [a, b] t: =(a+b)/2 p: = значение текущей ячейки (ТЯ) a: =a+p·(t-a); b: =b-(1 -p)·(t-a) Если справа от ТЯ есть заполненные ячейки, то переход к п. 7; иначе к п. 8 7. Зачеркиваем ТЯ и сдвигаемся на шаг вправо, затем переходим к п. 2 8. Останов.
Пример работы алгоритма № Значение ячейки Выбор части отрезка a b t=(a+b)/2 0 1 1/2 1 1 правая 1/2 1 3/4 2 3 4 5 6 7 8 9 0 1 1 0 1 0 левая правая левая правая левая 1/2 5/8 11/16 23/32 47/64 189/256 3/4 3/4 3/4 95/128 379/512 5/8 11/16 23/32 47/64 95/128 189/256 379/512 757/1024
Алгоритмические ГСЧ • • • Метод серединных квадратов Метод смешанных произведений Метод перемешивания Конгруэнтный метод Метод обратной функции Алгоритм Вичмана-Хилла (положен в основу программы «Генерация случайных чисел» из надстройки «Пакет анализа» MS Excel 2003 и 2007)
Генерация псевдослучайных чисел в Excel
Из 100 случайных точек, равномерно распределенных в единичном квадрате, 40 попало на кляксу. Площадь кляксы S=0. 4 кв. ед. 1 0 0 1
Примеры имитации в Excel: (в ячейках А 3 и А 6 – числа, полученные ГСЧ ) • подбрасывания монеты: =ЕСЛИ(A 3>0, 5; "орел"; "решка") • игрального кубика: =ЕСЛИ(A 6<1/6; 1; ЕСЛИ(A 6<2/6; 2; (ЕСЛИ(A 6<3/6; 3; ЕСЛИ(A 6<4/6; 4; ЕСЛИ(A 6<5/6; 5; 6))))))
Заключение: • Мы начали с вопроса: «Как найти площадь «неправильной» фигуры? » • Пришли к проблеме генерации случайных чисел – одной из массовых задач прикладной математики, являющейся основой многих современных численных методов, а также создания имитационных моделей