需要一个快速的Java beta分发随机数生成器

我需要在某些速度关键代码中生成具有beta分布的随机数。 目前我正在使用numerics4j库中的BetaRandomVariable()类 – 但目前占我代码CPU使用率的95%左右!

任何人都可以推荐更快的方法来生成这些随机数吗?

您可以查看NumPy随机数生成器 。 它们在C中,但代码相对可读并且允许许可,因此可以轻松地移植到Java。 您不需要移植基本的Mersenne Twister生成器,因为Java在其标准库中有一个,只有采用数字的代码形成Mersenne Twister并将其转换为beta分布。 我已将大部分NumPy随机数生成器移植到D并发现它们非常高效,您可能会在Java中找到它们。

我在许多应用程序中发现了Mersenne Twister算法的更快的Java实现,可以从这里获得: http : //www.cs.gmu.edu/~sean/research/

Interesting Posts