速度が重要なコードでベータ分布を持つ乱数を生成する必要があります。現在、numerics4jライブラリのBetaRandomVariable()クラスを使用していますが、現在、コードのCPU使用率の約95%を占めています。
誰かがこれらの乱数を生成するためのより速い方法をお勧めできますか?
速度が重要なコードでベータ分布を持つ乱数を生成する必要があります。現在、numerics4jライブラリのBetaRandomVariable()クラスを使用していますが、現在、コードのCPU使用率の約95%を占めています。
誰かがこれらの乱数を生成するためのより速い方法をお勧めできますか?
NumPy乱数ジェネレーターを見ることができます。これらはCですが、コードは比較的読みやすく、パーミッシブライセンスが付与されているため、Javaに簡単に移植できます。Javaには標準ライブラリに1つあるため、基本的なMersenne Twisterジェネレーターを移植する必要はありません。MersenneTwisterから数値を取得し、それをベータ分布に変換するコードのみです。私はほとんどのNumPy乱数ジェネレーターをDに移植しましたが、それらは非常に効率的であることがわかりました。おそらくJavaでも同じことがわかります。
多くのアプリケーションで役立つと私が見つけたメルセンヌツイスターアルゴリズムのより高速なJava実装は、ここから入手できます:http ://www.cs.gmu.edu/~sean/research/