我的教授正在模拟客户到银行。它表示客户遵循具有 3.5 均值和 1.3 标准偏差的正态分布到达。
问题是我在理解为什么使用此代码时遇到了一些困难。我相信他提供的代码是接收流、均值和标准来生成随机数
代码
public class Random {
private static double second=0;
static double normal(int stream, double mean, double std){
double v1=0, v2=0, y1, y2, x1, x2, w=2;
if (second!=0 ){
return second;
}
while(w>1){
v1=2*RandomGenerator.rand(stream)-1;
v2=2*RandomGenerator.rand(stream)-1;
w=Math.pow(v1,2)+Math.pow(v2,2);
}
y1=v1*Math.pow((-2*Math.log(w))/w, 0.5);
y2=v2*Math.pow((-2*Math.log(w))/w, 0.5);
x1=mean+y1*std;
x2=mean+y2*std;
second=x2;
return x1;
}
}
我的数学课是很多年前的,所以理解这个正态分布有点困难,在网上搜索了如何计算正态分布后,我找不到任何类似于给定代码的公式。
所以,这些是我的问题。
- 做什么
second
?是某种保护吗? - 这段代码如何使用正态分布?好像想不通...