【发布时间】:2012-05-02 15:12:55
【问题描述】:
我的教授正在模拟客户到银行。 它表示客户遵循具有 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有什么作用?这是某种保护? - 这段代码如何使用正态分布?好像没看懂……
【问题讨论】:
-
请告诉你的教授他应该学会正确地命名他的变量
-
@chburd :) 我也认为 vars 名称应该更具解释性
-
还请告诉您的教授,到达通常被建模为泊松分布,而不是正态分布。