eine schnelle Java Beta-Verteilung Zufallszahlengenerator benötigen
-
20-09-2019 - |
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?
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/