Vra

Ek is op soek na 'n werkende, redelik robuuste RNG wat geen spesiale hardeware gebruik nie.Dit kan wiskundige metodes gebruik (Mersenne Twister, ens.), dit kan "entropie" van die masjien af ​​versamel, wat ook al.Op Linux/ens het ons 'n drand48() wat 48 ewekansige bisse genereer.Ek wil 'n soortgelyke funksie/klas vir C++ of C# hê wat meer as 32 bisse ewekansigheid kan genereer en watter lae-orde bisse ewe ewekansig is as hoë-orde bisse.

Dit hoef nie kriptografies veilig te wees nie, maar dit moet nie die C-taal gebruik of daarop gebaseer wees nie rand() of .NET System.Random.

Enige bronkode, skakels na bron, ens.sal waardeer word!As dit misluk, watter TIPE RNG moet ek soek?

Was dit nuttig?

Oplossing

Vir C++, Boost.Random is waarskynlik waarna jy soek.Dit het ondersteuning vir MT (onder baie ander algoritmes), en kan entropie insamel via die nondet_random klas.Kyk daarna!:-)

Ander wenke

Die Gnu Wetenskaplike Biblioteek (GSL) het 'n redelik uitgebreide stel RN kragopwekkers, toets harnas, ens.As jy op Linux is, is dit waarskynlik reeds op jou stelsel beskikbaar.

Kyk uit vir die Gnu Wetenskaplike Biblioteek.Dit is gelisensieer onder die GPL eerder as LGPL.

Soos ander mense genoem het, is die Boost ewekansige klasse 'n goeie begin.Die implementering daarvan voldoen aan die PRNG-kode wat vir TR1 bedoel is:

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

As jy 'n onlangse weergawe van die G++ samesteller het, kan jy vind dat die TR1 biblioteke reeds ingesluit is

C++11 het 'n robuuste ewekansige nommer-biblioteek aangeneem gebaseer op boost.random.Jy kan toegang tot 'n aantal ewekansige getal-enjins gebruik deur verskillende algoritmes te gebruik om aan jou kwaliteit-, spoed- of groottevereistes te voldoen.Kwaliteit-implementerings sal selfs toegang bied tot watter nie-deterministiese RNG ook al jou platform bied std::random_device.

Daarbenewens is daar baie adapters om spesifieke verspreidings te produseer, wat die behoefte om sulke manipulasie met die hand uit te voer (iets wat dikwels verkeerd gedoen word) uit te skakel.

#include <random>

Boost.Random is my eerste keuse vir RNG

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

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top