2013-06-13 23 views
10

Quando è necessario essere in grado di generare un numero casuale da un seme e garantire che sia lo stesso numero tra diverse versioni di .NET Framework e Mono Framework, così come tra diverse architetture (x86 , x64), cosa fai?Generatore di numeri casuali Crossplatform

Attualmente sto considerando di archiviare milioni di byte casuali in un file da utilizzare come soluzione temporanea a questo problema, ma penso che probabilmente ci sia un modo migliore (si spera non troppo complicato).

+0

Perché System.Random funziona in modo diverso su un computer a 64 bit quando utilizza Int32 in modo estensivo? Hai provato la differenza? –

+0

Forse implementare il proprio algoritmo di generazione di numeri casuali (in realtà è meglio essere pseudocasuali per essere deterministici). –

+0

... Quindi vuoi numeri casuali prevedibili? –

risposta

11

Se avete bisogno di un'implementazione veramente portatile, l'opzione migliore sarebbe probabilmente quella di utilizzare solo un caso su misura generatore di numeri, come questo Mersenne Twister implementation o Colin Green's Fast Random Number Generator. Controllando l'implementazione, puoi garantire che otterrai gli stessi risultati a parità di seed su qualsiasi piattaforma.

+1

L'implementazione di Colin Green di "Xorshift RNGs" sembra essere esattamente ciò che sto cercando, ma Non sono sicuro di quale sia l'accordo di licenza. 'GPL' e anche' LGPL' non sono compatibili con questo progetto. –

+0

@ Mr.Smith Scriverlo direttamente e chiedere, ma la pagina collegata include "Questo articolo è concesso in licenza con una licenza Creative Commons Attribution 3.0" –

Problemi correlati