2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Генераторы случайных чисел
Сообщение08.08.2016, 07:31 


07/08/07
97
Возможно ли доказать аналитически (или как-то еще), что тот или иной генератор дает случайные числа с заданным распределением (или хотя бы с заданным классом распределений)?

 Профиль  
                  
 
 Re: Генераторы случайных чисел
Сообщение08.08.2016, 08:59 
Заслуженный участник
Аватара пользователя


01/03/06
13626
Москва
Странный вопрос. Генераторы случайных чисел не даются Свыше, а являются творениями рук человеческих. При создании генератора создатель заранее заботится тем, чтобы создаваемый генератор генерировал числа заданного заранее закона распределения.
Если же есть неизвестно для чего и кем созданный генератор (черный ящик), то есть методы мат. статистики, позволяющие отнести генерируемые им последовательности к определенному закону распределения.

 Профиль  
                  
 
 Re: Генераторы случайных чисел
Сообщение08.08.2016, 10:23 
Заслуженный участник
Аватара пользователя


11/03/08
9574
Москва
Обычно распределения, отличные от равномерного, получаются двухшаговым способом - сперва генерируются равномерно распределённые числа, затем они преобразуются к требуемому распределению (по одному, как $x=F^{-1}(u)$, где $F^{-1}()$ - функция, обратная к требуемому распределению, по два на входе и два на выходе, как в методе Бокса-Мюллера, или несколько в одно, как в методах, основанных на ЦПТ).
Соответственно, вопрос распадается на два подвопроса. Как проверить равномерность и как проверить переход от равномерного к желаемому.
Теория равномерных ГСЧ достаточно развита, для ознакомления с основными результатами можно почитать второй том Кнута, а вкратце:
Ограничиваются генераторами равномерно распределённых целых чисел, а когда нужно действительное число - приводят его к нужному диапазону действительных. Попытки сразу генерировать действительные приводила к численной неустойчивости. Равномерность в этом случае достигается, если каждое возможное значение в цикле получается одинаковое число раз. Для чаще всего применяемых генераторов, в которых $x_{n+1}=g(x_n)$, новое С.Ч. зависит только от одного предыдущего, каждое число в цикле только единожды. Для мультипликативных генераторов вида $x_{n+1}=ax_n+b \mod M$ проверить это свойство для данных a, b, M легко, применяя элементарную теорию чисел, и выбираются обыкновенно такие, что генератор получается "полноцикловым", что обеспечивает равномерность. Если это не убеждает, а также для генераторов, для которых нет столь развитой теории, можно тупо перебрать все значения, ища повторения (хранить все мыслимые значения не надо, практичнее сравнивать $g(x)$ и $g(g(x))$) и убедиться, что длина цикла максимально.
Равномерность не единственное требование для ГСЧ. Генератор $x_{n+1}=x_n+1 \mod M$ вполне равномерный, но, наверно, худший ГСЧ из мыслимых. Некоррелированность проверяется также аналитически, более сложные требования к случайности приходится проверять численными экспериментами.
Методы приведения равномерно распределённой величины к желаемому распределению доказаны, как правило, аналитически. Численные проверки делают скорее, чтобы убедиться в том, что аналитическая формула запрограммирована верно.

(Оффтоп)

Лет 30 с лишним тому, перечитав Кнута, взялся я делать "лучший в мире нормальный ГСЧ". Включал он в себя 16 равномерных генераторов со сравнительно небольшими, но простыми периодами, результат которых преобразовывался в действительные числа с нулевым средним, единичной дисперсией и четвёртым моментом, равным 3 (то есть "почти нормальным"). Ещё один генератор, на регистрах сдвига, менял значения отдельных отсчётов из этих 16 (когда выдавал единичный бит). Затем вектор перетасовывался при помощи ещё одного генератора (кажется, "середина квадрата") и "оптимальной сортировки для 16 значений" из третьего тома Кнута, делалось Фурье по 16 точкам, что было неким приложением Центральной Предельной Теоремы, ещё раз менялись знаки сдвиговым генератором и тасовалось, помнится, при помощи "генератора Фибоначчи" (периоды этих генераторов также были взаимно просты). Что давало повторение где-то после $10^{96}$ отсчётов, на нашу Вселенную должно было хватить, а различие генераторов должно было нивелировать специфические их недостатки (более сложные, чем коррелированость, взаимозависимости чисел). Полученный вектор выдавался по одному на запрос, а после 16 запросов генерировался новый вектор из 16 чисел, то есть на одно число операций было немногим больше, чем для генерации одного случайного числа с равномерным распределением.
Впрочем, численный эксперимент (достаточно обширный; Мудрое Начальство выдало ОВЦУ - загружать ЭВМ в третью смену, и зав. отделом срочно придумал инициативную тему "Исследование свойств генераторов случайных чисел", и машина молотила по 8 часов, генерируя С.Ч. и собирая статистику по их свойствам, так что получилось удачно) существенных преимуществ перед простым Боксом-Мюллером не показал. Просто хорошее упражнение по численному программированию вышло.

 Профиль  
                  
 
 Re: Генераторы случайных чисел
Сообщение09.08.2016, 11:42 


07/08/07
97
Я это все знаю, конечно.
Меня вот как раз и интересовало - есть ли что-то иное, помимо генерации равномерного с последующим переходом.

 Профиль  
                  
 
 Re: Генераторы случайных чисел
Сообщение09.08.2016, 15:03 
Заслуженный участник
Аватара пользователя


11/03/08
9574
Москва
То есть вопрос на самом деле иной? А именно "существуют ли генераторы, помимо через равномерный"? Так может, задавать сразу его?
Мой ответ - не знаю. Ни одного такого не знаю. Может, и предлагались, но не выжили. А может, существуют и применяются, только я такой дикий. Но тогда просьба дать ссылки на такой, и тогда, может быть, найдётся доказательство его свойств. А может, не найдётся.

 Профиль  
                  
 
 Re: Генераторы случайных чисел
Сообщение11.08.2016, 19:29 
Заслуженный участник


12/08/10
1629
Аппаратные генераторы основанные на шуме или радиоактивном распаде теоретически генерируют действительные случайные числа. Они распределены не равномерно, приходиться преобразовывать к нужному виду.

 Профиль  
                  
 
 Re: Генераторы случайных чисел
Сообщение11.08.2016, 21:06 
Заслуженный участник
Аватара пользователя


11/03/08
9574
Москва
Ну, обычно они для "досаливания" обычных. То ли начальное значение цикла задают, то ли "подправляют".

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group