【发布时间】:2011-01-16 09:19:04
【问题描述】:
我需要在某些速度关键代码中生成具有 beta 分布的随机数。目前我正在使用 numerics4j 库中的 BetaRandomVariable() 类 - 但目前占我代码 CPU 使用率的 95%!
谁能推荐一种更快的方法来生成这些随机数?
【问题讨论】:
标签: java statistics random beta-distribution
我需要在某些速度关键代码中生成具有 beta 分布的随机数。目前我正在使用 numerics4j 库中的 BetaRandomVariable() 类 - 但目前占我代码 CPU 使用率的 95%!
谁能推荐一种更快的方法来生成这些随机数?
【问题讨论】:
标签: java statistics random beta-distribution
您可以查看NumPy random number generators。它们用 C 语言编写,但代码相对易读且许可许可,因此可以轻松地将它们移植到 Java。您不需要移植基本的 Mersenne Twister 生成器,因为 Java 在其标准库中有一个,只需要从 Mersenne Twister 中获取数字并将其转换为 beta 发行版的代码。我已将大部分 NumPy 随机数生成器移植到 D 中,发现它们非常高效,您可能会在 Java 中找到相同的结果。
【讨论】:
我发现在许多应用程序中有用的 Mersenne Twister 算法的更快 Java 实现可从此处获得:http://www.cs.gmu.edu/~sean/research/
【讨论】: