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?

È stato utile?

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/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top