Robustní náhodných čísel generace

hlasů
34

Hledám výkonný, přiměřeně robustní generátoru náhodných čísel pomocí žádný speciální hardware. Je možné použít matematických metod (Mersenne Twister, etc), může „sbírat entropii“ ze stroje, cokoliv. Na Linuxu / etc máme drand48()který generuje 48 náhodných bitů. Chci podobné funkce / třídy pro C ++ nebo C #, který může generovat více než 32 bitů náhodnosti a které s nízkými bity jsou stejně jako náhodné jako high-bity.

Nemusí to být kryptograficky bezpečné, ale nesmí používat nebo být založen na jazyce C rand()nebo .NET System.Random.

Jakýkoli zdrojový kód, odkazy na zdroje, atd. By ocenili! Pokud to není možné, jaký typ generátoru náhodných čísel je třeba jsem hledal?

Položena 03/08/2008 v 03:05
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
27

Pro C ++, Boost.Random je pravděpodobně to, co hledáte. Má podporu pro MT (kromě mnoha dalších algoritmů), a může sbírat entropii přes nondet_randomtřídu. Koukni na to! :-)

Odpovězeno 03/08/2008 v 03:18
zdroj uživatelem

hlasů
8

GNU vědecká knihovna (GSL) má poměrně rozsáhlou sadu RN generátorů, zkušební postroje, atd. Pokud jste na linux, je to pravděpodobně již k dispozici ve vašem systému.

Odpovězeno 03/08/2008 v 03:26
zdroj uživatelem

hlasů
7

Dejte si pozor na GNU vědecká knihovna. Je to pod licencí GPL spíše než LGPL.

Jako další lidé již bylo zmíněno, náhodné tříd upřednostnění je dobrý začátek. Jejich realizace je v souladu se PRNG kódu kritizovaný pro 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

Pokud máte nejnovější verzi g ++, můžete najít knihoven TR1 již zahrnuty

Odpovězeno 13/08/2008 v 19:08
zdroj uživatelem

hlasů
5

C ++ 11 přijala robustní náhodných čísel knihovnu na základě boost.random. Máte přístup k množství náhodných čísel motory, které používají různé algoritmy, aby vyhovoval vašim požadavkům na kvalitu, rychlost, nebo velikost. Implementace kvalitní bude i poskytování přístupu k jakékoliv non-deterministický RNG vaše platforma nabízí přes std::random_device.

Kromě toho existuje mnoho adaptéry produkují specifické rozdělení, což eliminuje potřebu dělat takové manipulaci ručně (což často provádějí nesprávně).

#include <random>

Odpovězeno 26/06/2012 v 17:05
zdroj uživatelem

hlasů
2

Boost.Random Je to moje první volba pro RNG

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

Odpovězeno 29/03/2012 v 11:32
zdroj uživatelem

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