Frage

ich brauche Zufallszahlen zu erzeugen, die eine Beta-Verteilung in einer gewissen Geschwindigkeit kritischen Code. Ich bin die BetaRandomVariable () Klasse aus der numerics4j Bibliothek zur Zeit - aber stellt derzeit etwa 95% der CPU-Auslastung meinen Code des

Kann mir jemand einen schnelleren Weg empfehlen, diese Zufallszahlen zu erzeugen?

War es hilfreich?

Lösung

Sie können schauen Sie sich die NumPy Zufallszahlengeneratoren . Sie sind in C, aber der Code ist relativ lesbar und permissively lizenziert, so dass sie leicht auf Java portiert werden kann. Du hast nicht die grundlegenden Mersenne-Twister-Generator-Anschluss benötigen als Java ein in seiner Standardbibliothek hat, nur den Code, der Zahlen führt den Mersenne Twister bilden und wandelt es in eine Beta-Verteilung. Ich habe die meisten der NumPy Zufallszahlengeneratoren zu D portierte und fand sie sehr effizient zu sein, und Sie werden wahrscheinlich das gleiche in Java finden.

Andere Tipps

Ein schnellere Java-Implementierung des Mersenne-Twister-Algorithmus, die ich in einer Reihe von Anwendungen nützlich gefunden habe, ist hier verfügbar: http://www.cs.gmu.edu/~sean/research/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top