Hai bisogno di un veloce Java distribuzione beta generatore di numeri casuali
-
20-09-2019 - |
Domanda
Ho bisogno di generare numeri casuali che hanno una distribuzione beta in qualche codice critiche velocità. Attualmente sto utilizzando la classe BetaRandomVariable () dalla libreria numerics4j - ma rappresenta attualmente circa il 95% di utilizzo della CPU del mio codice
Qualcuno può suggerire un modo più veloce per generare questi numeri casuali?
Soluzione
Potete guardare le NumPy generatori di numeri casuali . Sono in C, ma il codice è relativamente leggibile e permissively licenza, in modo che possano essere facilmente portato a Java. Non è necessario alla porta del generatore di base Mersenne Twister come Java ha una nella sua libreria standard, solo il codice che prende i numeri costituiscono il Mersenne Twister e lo converte in una distribuzione beta. Ho porting la maggior parte dei NumPy numeri casuali generatori a D e ho trovato loro di essere molto efficiente, e probabilmente troverete lo stesso in Java.
Altri suggerimenti
Un'implementazione Java più veloce dell'algoritmo Mersenne Twister che ho trovato utile in un certo numero di applicazioni è disponibile da qui: http://www.cs.gmu.edu/~sean/research/