我有一个 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 分布。
有没有办法像我一样初始化这些(Exponential
、、Poisson
和) ?或者我应该实例化一个父/基类(如果是,如何?),所有这些类都从其中扩展?Gamma
Uniform
cern.jet.random.tdouble
笔记:
- 同样,我想要一个随机流(这样我的所有分布都可以使用该流中的随机数)——这对于可重复性非常重要。
- 一个示例模拟可能需要对这些分布进行数百万次(总共)采样 - 因此性能/速度始终是一个问题。