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

谁能推荐一种更快的方法来生成这些随机数?

有帮助吗?

解决方案

您可以看一下 NumPy的随机数生成器。他们在C,但代码比较可读permissively许可,所以他们可以很容易地移植到Java。你并不需要移植的基本梅森倍捻机发电机作为Java有一个在其标准库,只需要数形成梅森倍捻机,并把它转换成一个Beta分布的代码。我移植的大部分NumPy的随机数生成器,以d,发现他们是非常有效的,你可能会发现同一个Java编写的。

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top