Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Генератор равномерного распределения[0,1] не rand 
:(
    Опции темы
SlHunter
Дата 8.12.2007, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 8.12.2007

Репутация: нет
Всего: нет



Здравствуйте! Хотелось бы увидеть реализации хороших равномерных датчиков случайных чисел. Скорость абсолютно не важна, вожно качество, на данный момент я посмотрел 3 датчика:

•cтандартный rand(), т.е линейный конгруэнтный метод, он меня не устраивает совсем ));
•метод Фибоначчи с запаздываниями, который мне не понравился, т.к. его последовательность очень зависимая, ну может быть я накасячил с реализацией;
•ну и метод XorShift, на котором в данный момент остановился.

Датчик нужен для генерирования других распределений, поэтому хотелось что бы он имел хорошее распределение. Кто интересовался данным вопросом прошу помочь. Интересуют именно реализации датчиков на С или С++. 

P.S. Википедию читал всё, что там есть по датчикам, если будете советовать книги, то пожалуйста только те что можно достать в электронном виде.
P.P.S. форум вроде тоже перечитал интересующего меня ничего не нашёл, только ссылки на Кнута, которого я к сожалению не могу найти.
PM MAIL   Вверх
archimed7592
Дата 8.12.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



SlHunter, если нужен качественный генератор, то советую присмотреться к Boost.Random.

Есть ещё один момент: если нужны именно случайные числа(а не псевдо случайные), то тебе понадобится аппаратный генератор этих самых чисел.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
W4FhLF
Дата 8.12.2007, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 20
Всего: 121





--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
SaDFromSpb
Дата 8.12.2007, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 3



SlHunter, еще на RSDN мутили проект качественного генератора. Можешь глянуть у них в списке проектов. Хотя, когда я его там увидел, до реализации дело не дошло еще =)



--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
SlHunter
Дата 8.12.2007, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 8.12.2007

Репутация: нет
Всего: нет



archimed7592, Нет абсолютно случайные числа не нужны, наоборот желательно, что бы опыт можно было повторить взяв то же самое начальное число, за Boost.Random спасибо, но желательны исходники, причём такие что б более менее понятные, вроде там нет, или я их ещё не нашёл щас поищу по внимательнее. Судя по всему генератор может быть либо хорошим и сложным, либо плохим и простым ( .... Boost.Random можно взять для сравнения что ли ) 

И если судить по моим заниям английского, этот генератор использует метод Mersenne twister, с ОЧЕНЬ большим периодом, что-то типа 2^19937. На Википедии есть псевдо код, попробую его.
 

W4FhLF, я же написал, что Википедию читал.


SaDFromSpb, а можно ссылки, посмотреть хотя бы их идеи алгоритмов.


Может кто знает ещё какие-нибудь алгоритмы, или вдруг кто-то писал свой.



Это сообщение отредактировал(а) SlHunter - 8.12.2007, 16:07
PM MAIL   Вверх
archimed7592
Дата 8.12.2007, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



SlHunter, Boost - это набор абсолютно открытых библиотек, с абсолютно открытыми исходниками, и абсолютно без каких-либо ограничений на использование библиотеки/исходников.
Boost.Random, как и большинство других библиотек из Boost не требует компиляции(подключил boost/random.hpp пользуйся). Что же касается "нужны понятные исходники", то конечно придётся для начала разобраться с устройством библиотеки, потом проще будет вытащить из многочисленных исходников, те, которые относятся к uniform distribution. Но простыми они тебе в любом случае не покажутся smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
SlHunter
Дата 8.12.2007, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 8.12.2007

Репутация: нет
Всего: нет



Ну что ж будем разбираться с этим ) В любом случае пригодитяс, но прошу если у кого, что ещё есть пишите!
PM MAIL   Вверх
W4FhLF
Дата 8.12.2007, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 20
Всего: 121



Цитата(SlHunter @  8.12.2007,  15:57 Найти цитируемый пост)
W4FhLF, я же написал, что Википедию читал.


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


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
SlHunter
Дата 8.12.2007, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 8.12.2007

Репутация: нет
Всего: нет



Ну вдруг там есть не всё, я просто хочу поискать ещё методы, в том числе и самодельные, а так я с тобой согласен моё первое метсо поиска это Википедия.
PM MAIL   Вверх
W4FhLF
Дата 8.12.2007, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 20
Всего: 121



Ну если чисто поресерчить, то из нескольких книг по крито, что я прочёл, мне больше всего понравилась "Брюс Шнайер. Прикладная криптография. Протоколы, алгоритмы и исходные тексты на языке C.", в частности главы "16. Генераторы псевдослучайных последовательностей и потоковые шифры" и "17. Другие потоковые шифры и генераторы истинно случайные последовательностей". В интернете ищется легко. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
SlHunter
Дата 8.12.2007, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 8.12.2007

Репутация: нет
Всего: нет



Спасибо почитаем. Если найду.
PM MAIL   Вверх
shara
Дата 19.12.2007, 02:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 29.6.2004
Где: печенье?

Репутация: нет
Всего: 2



в криптографии есть такое понятие как Линейный Рекурентный Регистр (ЛРР) он по начальному заполнению генерит случайную гамму (0 или 1). в инете ссылок незнаю. кому интересно могу так рассказать, буквально на пальцах. 


--------------------
   с точки зрения аэродинамики шмель не может летать  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0783 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.