我需要在我的代码中生成随机数,但我想根据当前场景更改分布的参数。该应用程序可以作为单线程或多线程应用程序运行。
我的问题是,我应该RandomGenerator
在我的类的构造函数中初始化对象,然后使用该RandomGenerator
对象来(重新)初始化NormalDistribution
,BetaDistribution
或任何其他AbstractRealDistribution
重复对象,还是在我需要更新参数后初始化我的分布对象。
就生成良好的随机数和最优性而言,哪个是更好的选择?
情况1:
class Test {
protected RandomGenerator rng;
public Test() {
rng = new Well19937c();
}
private void someFunction(double mean, doube std_dev) {
NormalDistribution norm = new NormalDistribution(this.rng, mean, std_dev);
while (condition is met) {
// do some calculation, create some random numbers, get new mean and std_dev
norm = new NormalDistribution(this.rng, new_mean, new_std_dev);
}
}
}
案例二:
class Test {
private void someFunction(double mean, doube std_dev) {
NormalDistribution norm = new NormalDistribution(mean, std_dev);
while (condition is met) {
// do some calculation, create some random numbers, get new mean and std_dev
norm = new NormalDistribution(new_mean, new_std_dev);
}
}
}