2013-06-13 28 views
10

Gdy trzeba wygenerować losową liczbę z materiału siewnego i zagwarantować, że będzie taka sama liczba dla różnych wersji systemów .NET Framework i Mono Framework, jak również dla różnych architektur (x86 , x64), co robisz?Generator liczb losowych Crossplatform

Obecnie rozważam przechowywanie milionów losowych bajtów w pliku do wykorzystania jako tymczasowe rozwiązanie tego problemu, ale myślę, że jest prawdopodobnie lepszy sposób (mam nadzieję, że nie jest to zbyt skomplikowane).

+0

Dlaczego system.Random miałby działać inaczej na 64-bitowym komputerze, jeśli używa tak intensywnie Int32? Czy przetestowałeś różnicę? –

+0

Być może zaimplementuj własny algorytm generowania liczb losowych (w rzeczywistości, aby być deterministycznym, lepiej być pseudolosowym). –

+0

... Więc chcesz przewidywalne liczby losowe? –

Odpowiedz

11

Jeśli potrzebujesz prawdziwie przenośny wdrożenia, najlepszym rozwiązaniem byłoby prawdopodobnie wystarczy użyć niestandardowego losowo generator liczb, taki jak ten Mersenne Twister implementation lub Colin Green's Fast Random Number Generator. Kontrolując implementację, możesz zagwarantować, że uzyskasz te same wyniki, z uwzględnieniem tego samego materiału siewnego na dowolnej platformie.

+1

Wdrażanie przez Colin Green 'Xorshift RNGs' wydaje się być dokładnie tym, czego szukam, ale Nie jestem pewien, na czym polega umowa licencyjna. 'GPL', a nawet' LGPL' nie są kompatybilne z tym projektem. –

+0

@ Mr.Smith Napiszę go bezpośrednio i zapytam, ale strona z linkami zawiera: "Ten artykuł jest objęty licencją Creative Commons Attribution 3.0" –

Powiązane problemy