我需要在某些速度关键代码中生成具有 beta 分布的随机数。目前我正在使用 numerics4j 库中的 BetaRandomVariable() 类 - 但目前代表了我代码 CPU 使用率的大约 95%!
谁能推荐一种更快的方法来生成这些随机数?
我需要在某些速度关键代码中生成具有 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/