2013-06-26 34 views
7

Devo inviare una sequenza identica di numeri casuali a una rete distribuita di applicazioni.Deterministica generazione di numeri casuali su sistemi

Poiché tale sequenza potrebbe essere piuttosto lunga, stavo pensando di inviare solo un numero di inizializzazione del seme centralizzato (generato a caso) e la lunghezza della sequenza desiderata.

Dato che ogni componente della mano ricevente utilizzerà la stessa versione .NET, sarebbe una soluzione valida avere dati casuali identici generati su tutti i miei nodi?

+1

Vedi http://stackoverflow.com/questions/17094189/crossplatform-random-number-generator – drch

+0

Grazie per il puntatore. Ti piacerebbe scriverlo come risposta in modo che io possa marcare come accettato? – Andrea

risposta

9

Si dovrebbe essere in grado di distribuire un seme per Casuale (int seed) e ricreare la stessa sequenza presupponendo che si stia utilizzando la stessa versione di .NET in tutti gli ambienti.

Remarks on System.Random @ MSDN

Note per i chiamanti L'attuazione del generatore di numeri casuali in la classe Random non è garantita a rimanere lo stesso nei principali versioni di .NET Framework. Di conseguenza, il codice applicazione non dovrebbe presupporre che lo stesso seme genererà la stessa sequenza pseudo-casuale in diverse versioni di .NET Framework.

Se è possibile visualizzare un caso in cui la versione del framework cambierà, o se potrebbe essere necessario ricreare una vecchia sequenza dopo aver iniziato a utilizzare una nuova versione, è necessario creare la propria implementazione casuale.

vedere le risposte di questa domanda per i puntatori: Crossplatform random number generator

1

È possibile utilizzare la classe Random con un seme o utilizzare un'architettura orientata ai servizi.

Random quando inizializzato con un seme produrrà una sequenza identica.

+2

C'è un avvertimento importante su questo che è stato discusso in precedenza su SO. Vedi la risposta di drch. – jerry