visual - use random c#




Generazione di numeri casuali robusti (4)

Sto cercando un RNG performante e abbastanza robusto che non usi hardware speciale. Può usare metodi matematici (Mersenne Twister, ecc.), Può "raccogliere entropia" dalla macchina, qualunque cosa. Su Linux / etc abbiamo un drand48() che genera 48 bit casuali. Mi piacerebbe una funzione / classe simile per C ++ o C # che possa generare più di 32 bit di casualità e quali bit di basso ordine siano ugualmente casuali come i bit di ordine superiore.

Non deve essere crittograficamente sicuro ma non deve utilizzare o essere basato sul linguaggio C rand() o .NET System.Random .

Sarebbe apprezzato qualsiasi codice sorgente, link alla fonte, ecc. In caso contrario, quale TIPO di RNG dovrei cercare?


C ++ 11 ha adottato una robusta libreria di numeri casuali basata su boost.random. È possibile accedere a un numero di motori di numeri casuali utilizzando diversi algoritmi per soddisfare i requisiti di qualità, velocità o dimensioni. Implementazioni di qualità forniranno anche l'accesso a qualsiasi RNG non deterministico offerto dalla piattaforma tramite std::random_device .

Inoltre ci sono molti adattatori per produrre distribuzioni specifiche, eliminando la necessità di eseguire tali manipolazioni a mano (cosa che spesso viene eseguita in modo errato).

#include <random>



La Gnu Scientific Library (GSL) ha una serie piuttosto ampia di generatori RN, imbracatura di test, ecc. Se sei su Linux, probabilmente è già disponibile sul tuo sistema.








random