Mocna Random Number Generation

głosy
34

Szukam wydajnych, rozsądnie solidnej RNG przy użyciu specjalnego sprzętu. Można go używać metod matematycznych (Mersenne Twister, etc), może „zbierać entropii” z automatu, cokolwiek. Na Linux / etc mamy drand48(), która generuje 48 losowych bitów. Ja jak podobną funkcję / klasy C ++ lub C #, który może wytwarzać więcej niż 32 bitów przypadkowość oraz które znaczące bity są równie losowych jako znaczących bitów.

To nie musi być kryptograficznie bezpieczne, ale to nie musi korzystać lub być oparte na języku C rand()lub .NET System.Random.

Każdy kod źródłowy, linki do źródła, itp będą mile widziane! W przypadku jego braku, jaki rodzaj RNG mam szukać?

Utwórz 03/08/2008 o 03:05
źródło użytkownik
W innych językach...                            


5 odpowiedzi

głosy
27

Dla C ++, Boost.Random jest chyba to, czego szukasz. Posiada wsparcie dla MT (wśród wielu innych algorytmów) i można zebrać entropię poprzez nondet_randomklasy. Sprawdź to! :-)

Odpowiedział 03/08/2008 o 03:18
źródło użytkownik

głosy
8

GNU Scientific Library (GSL) ma dość rozbudowany zestaw generatorów RN, uprząż testowego itp Jeśli jesteś na Linuksie, to chyba już dostępne w systemie.

Odpowiedział 03/08/2008 o 03:26
źródło użytkownik

głosy
7

Uważaj na GNU Scientific Library. To na licencji GPL, a nie LGPL.

Jak inni ludzie wspomniano, Boost losowe klasy są dobre na początek. Ich realizacja jest zgodna z kodeksem PRNG trafi do 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

Jeśli masz najnowszą wersję kompilatora g ++, można znaleźć bibliotek TR1 już uwzględnione

Odpowiedział 13/08/2008 o 19:08
źródło użytkownik

głosy
2

Boost.Random Jest to mój pierwszy wybór dla RNG

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

Odpowiedział 29/03/2012 o 11:32
źródło użytkownik

głosy
5

C ++ 11 przyjęła solidną bibliotekę liczb losowych w oparciu o boost.random. Można uzyskać dostęp do wielu przypadkowych silników numer przy użyciu różnych algorytmów do swoich wymagań jakości, szybkości lub wielkości. Implementacje jakości nawet udostępnienia cokolwiek niedeterministyczne RNG Twoja platforma oferuje pośrednictwem std::random_device.

Ponadto istnieje wiele adapterów do produkcji konkretnych rozkładów, eliminując potrzebę zrobienia takiej manipulacji przez strony (coś często wykonane nieprawidłowo).

#include <random>

Odpowiedział 26/06/2012 o 17:05
źródło użytkownik

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