2014 dxdy logo

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

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


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


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 Псевдослучайные числа.
Сообщение16.09.2012, 14:06 


05/01/10
483
Добрый день!

Появилась необходимость написать генератор Парка-Миллера. На английской википедии нашёл формулу генератора:

$X_{k+1}=g\cdot X_k \mod n$

Не пойму с константой $g$, то есть как она определяется. Вроде это взаимно простое число с $n$. Скажите, я верно понял?

 Профиль  
                  
 
 Re: Псевдослучайные числа.
Сообщение16.09.2012, 16:14 
Заслуженный участник
Аватара пользователя


05/12/09
1813
Москва
По-моему, это называется конгруэнтный метод и число берут просто простое.

 Профиль  
                  
 
 Re: Псевдослучайные числа.
Сообщение16.09.2012, 17:29 
Заслуженный участник


08/04/08
8562
Я не знаю, что такое генератор Парка-Миллера, но ясно что $X_k = X_0g^k \bmod n$. Качество генератора прежде всего сводится к длине цикла, т.е. к показателю $g$ по модулю $n$. Если $n=p^a;2p^a$, то $\mathbb{Z}_n$ - циклическая и максимальный цикл дает образующая $g$. Если $n=p$, то образующую $g$ можно искать через критерий Лёмера (немного тут есть, но это не то. Критерий простой - просто вычисляем порядок элемента: $g$ - образующая группы $\mathbb{Z}_p^{\times}$ (ее порядок $p-1$) $\Leftrightarrow g^{p-1}\equiv 1 \pmod p \& (\forall q\in\mathbb{P})q\mid p-1\Rightarrow g^{\frac{p-1}{q}}\not\equiv 1\pmod p$). В случае составного $n$ порядок группы равен $\varphi (n)$, где $\varphi$ - функция Эйлера, но максимальный порядок элемента - это функция Кармайкла $\lambda (n)=\lcm\limits_k(p_k^{a_k-1}(p_k-1))<\varphi(n)$ при $n\neq p^a;2p^a$, поэтому длина цикла будет меньше, но в принципе тоже можно юзать.
Читайте также рекомендованный Вам 2-й том Кнута Искусства программирования по ГСЧ. И линейный конгруэнтный генератор вроде круче. :roll:
Руст где-то тут утверждал, что если $n$ - простое и в качестве $g$ испытывать последовательные простые числа, то за $O(\ln ^2n)$ испытаний найдем образующую. Но это какой-то очень сложный недоказанный факт, я его не знаю.

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

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



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

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


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

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