【发布时间】:2017-04-04 22:18:06
【问题描述】:
我有一个 Java 模拟,我需要在其中使用 Uniform、Exponential、Poisson 和 Gamma 分布 - 我需要初始化随机流和/或这些分布中的每一个种子(这样我就可以精确地再现轨迹给定一个固定的种子)。
我正在使用Parallel Colt(这是 Colt 的多线程版本)。
对于Uniform,我可以正确地将DoubleUniform 对象(从cern.jet.random.tdouble.DoubleUniform 导入后)作为:
int fixedSeed = 12345;
doubleUniformDist = new DoubleUniform (0.0, 1.0, fixedSeed);
但是,对于 Exponential、Poisson 和 Gamma 分布(都在 cern.jet.random.tdouble),我不能通过传递 fixedSeed 来做同样的事情 - 因为他们希望传递 DoubleRandomEngine 对象:
构造函数总结
Exponential(double lambda, DoubleRandomEngine randomGenerator)
构造负指数分布。
Poisson(double mean, DoubleRandomEngine randomGenerator)
构造泊松分布。
Gamma(double alpha, double lambda, DoubleRandomEngine randomGenerator)
构造 Gamma 分布。
有没有办法像使用Uniform 一样初始化这些(Exponential、Poisson 和 Gamma)?或者我应该在cern.jet.random.tdouble 中实例化一个父类/基类(如果是,如何?),所有这些类都从该类扩展而来?
注意事项:
- 再次,我想要一个随机流(这样我所有的 分布可以使用该流中的随机数) - 这是 对于重现性非常重要。
- 一个示例模拟可能需要对这些分布进行数百万次(总共)采样 - 因此性能/速度始终是一个问题。
【问题讨论】:
标签: java random simulation colt