50 Stimmen

Wie gut ist java.util.Random?

Zwei Fragen:

Werde ich für jedes Saatgut, das ich einsetze, eine andere Zahlenfolge erhalten?

Gibt es einige "tote" Samen? (Solche, die Nullen produzieren oder sich sehr schnell wiederholen.)

Welche anderen PRNGs sollte ich übrigens verwenden, wenn überhaupt?

Lösung: Da ich den PRNG für ein Spiel verwenden werde, muss er nicht kryptografisch sicher sein. Ich entscheide mich für den Mersenne-Twister, sowohl wegen seiner Geschwindigkeit als auch wegen seines großen Zeitraums.

-2voto

John D. Cook Punkte 28817

Wenn die RNG-Qualität für Sie wirklich wichtig ist, würde ich empfehlen, einen eigenen RNG zu verwenden. Vielleicht ist java.util.Random einfach großartig, in dieser Version, auf Ihrem Betriebssystem, etc. Wahrscheinlich ist er das. Aber das kann sich ändern. Es ist schon vorgekommen, dass ein Bibliotheksautor die Dinge in einer späteren Version schlechter gemacht hat.

Es ist sehr einfach, ein eigenes Programm zu schreiben, und Sie wissen dann genau, was vor sich geht. Es wird sich bei einem Upgrade nicht ändern usw. Hier ist eine Generator könnten Sie in 10 Minuten nach Java portieren. Und wenn Sie in einer Woche anfangen, in einer neuen Sprache zu schreiben, können Sie es wieder portieren.

Wenn Sie keinen eigenen RNG implementieren, können Sie den Code eines bekannten RNG aus einer seriösen Quelle übernehmen und in Ihren Projekten verwenden. Dann wird Ihnen niemand mehr den Generator wegnehmen.

(Ich plädiere nicht dafür, dass die Leute sich ihre eigenen Ideen ausdenken. Algorithmen nur ihre eigenen Umsetzung . Die meisten Menschen, mich eingeschlossen, haben keinen Grund, ihren eigenen Algorithmus zu entwickeln. Es ist leicht, einen schlechten Generator zu schreiben, den man für wunderbar hält. Deshalb müssen die Leute Fragen wie diese stellen und sich fragen, wie gut der Bibliotheksgenerator ist. Der Algorithmus in dem Generator, auf den ich verwiesen habe, hat viele Peer-Reviews durchlaufen).

11 Stimmen

Ich bin nicht einverstanden mit der Idee, einen eigenen Generator zu schreiben - das ist so, als würde man eine eigene Verschlüsselungsroutine schreiben: Es sei denn, man ist wirklich gut in Mathematik. y sehr vorsichtig mit der Umsetzung sein, es wird wahrscheinlich schlecht sein. Es gibt viele gut erforschte Algorithmen, die sorgfältig implementiert wurden.

0 Stimmen

In der Tat, wie Sie in Ihrem Artikel betonen: "Die Erzeugung von Zufallszahlen ist eine knifflige Angelegenheit. Es ist schwierig, gute Algorithmen zur Erzeugung von Zufallszahlen zu erfinden. Der Code, der die Algorithmen implementiert, ist schwierig zu testen." Warum das Rad neu erfinden?

0 Stimmen

(Nicht dass ich damit sagen will, dass Sie keinen eigenen PRNG entwerfen/implementieren können. Aber als Forschungsstatistiker haben Sie einen kleinen Vorsprung :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X