Надежный Генератор случайных чисел

голоса
34

Я ищу производительный, достаточно надежный ГСЧ , не используя никакого специального оборудования. Он может использовать математические методы (Вихрь Мерсенна, и т.д.), он может «собирать энтропию» из машины, что угодно. В Linux / и т.д. мы имеем , drand48()который генерирует 48 случайных битов. Я хотел бы аналогичную функцию / класс для C ++ или C # , который может генерировать больше , чем 32 бита случайности и какие биты низкого порядка являются равно как случайными как биты высокого порядка.

Он не должен быть криптографический безопасными , но он не должен использовать или основываться на языке Си rand()или .NET System.Random.

Любой исходный код, ссылки на источник, и т.д. будет оценен! В противном случае, какой тип RNG я должен искать?

Задан 03/08/2008 в 03:05
источник пользователем
На других языках...                            


5 ответов

голоса
27

Для C ++, Boost.Random , вероятно , что вы ищете. Он имеет поддержку MT (среди многих других алгоритмов), и может собирать энтропию через nondet_randomкласс. Проверьте это! :-)

Ответил 03/08/2008 d 03:18
источник пользователем

голоса
8

Gnu научная библиотека (GSL) имеет довольно обширный набор RN генераторов, тест жгуте и т.д. Если вы на Linux, это, вероятно , уже доступны в вашей системе.

Ответил 03/08/2008 d 03:26
источник пользователем

голоса
7

Следите за Gnu научной библиотеки. Она распространяется под лицензией GPL, а не LGPL.

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

http://www.boost.org/doc/libs/1_35_0/libs/random/index.html http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1452.html

Если у вас есть последняя версия G ++ компилятор, вы можете найти библиотеки TR1 уже включены

Ответил 13/08/2008 d 19:08
источник пользователем

голоса
5

C ++ 11 приняла надежную библиотеку случайных чисел , основанный на boost.random. Вы можете получить доступ ряда случайных чисел двигателей , использующих различные алгоритмы для удовлетворения ваших требований к качеству, скорости или размера. Реализации качества даже предоставить доступ к любой недетерминирована RNG ваша платформа предлагает через std::random_device.

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

#include <random>

Ответил 26/06/2012 d 17:05
источник пользователем

голоса
2

Boost.Random мой первый выбор для ГСЧ

http://www.boost.org/doc/libs/random

Ответил 29/03/2012 d 11:32
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more