- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的教授正在模拟客户到达银行的情况。它表示客户到达时遵循均值 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
的作用是什么?这是某种保护吗?最佳答案
我将以相反的顺序回答问题。该方法的核心部分是一种标准技术,用于将从 [0, 1] 上的均匀分布抽取的两个随机变量转换为从具有给定均值和标准差的正态分布抽取的两个随机变量。 (它称为 Box-Muller transform 。)while
循环使用生成和测试技术从单位圆上的二维均匀分布生成随机点 (v1, v2)。从 (v1, v2) 到 (y1, y2) 的映射将均匀分布转换为均值为零且单位标准差的二维正态分布。然后对其进行平移和缩放以获得具有所需平均值和标准差的 (x1, x2)。
现在有了生成正态分布变量对的方法,其余代码的工作方式如下:如果second == 0
,则这是需要生成新值的信号,因此它通过 if
并生成一对值。然后它将其中一个值保存在 second
中并返回另一个值。下次调用该方法时,它会注意到 second
中有一个有效值,并立即返回该值,而不是生成更多值。
代码中存在一个重大错误:second
在返回其值之前应重置为零;否则它将始终继续返回第二个随机值(在第二次调用后看起来不会那么随机)。即使这个缺陷得到纠正,还会出现第二个问题。每个其他返回值的值为 0 的概率为零。理论上,这并不算太糟糕,因为正态分布的随机样本的值为 0 的概率是...零!不过,这仍然是一个缺陷。
我将重写代码如下:
public class Random {
private static double second;
private static boolean secondValid = false;
static double normal(int stream, double mean, double std) {
double v1, v2, y1, y2, x1, x2, w;
if (secondValid) {
secondValid = false;
return second;
}
do {
v1 = 2 * RandomGenerator.rand(stream) - 1;
v2 = 2 * RandomGenerator.rand(stream) - 1;
w = v1 * v1 + v2 * v2;
} while (w > 1);
y1 = v1 * Math.sqrt(-2 * Math.log(w) / w);
y2 = v2 * Math.sqrt(-2 * Math.log(w) / w);
x1 = mean + y1 * std;
x2 = mean + y2 * std;
second = x2;
secondValid = true;
return x1;
}
}
关于Java 正态分布,均值不同于 0,标准差不同于 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10416578/
我有一个数字列表,其中包含这些数字的样本平均值和标准差。现在我正在尝试找出平均值+-SD、平均值+-2SD 和平均值+-3SD 中的数字。例如,在mean+-SD部分,我编写了这样的代码: ND1 =
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: erf(x) and math.h Best library for statistics in C++?
我正在尝试模拟球迷到达体育场。系统本身,我相信不会有问题,但是,粉丝的到来是一个正态分布。 我的问题是: 我有一个特定的到达时间,比如 100 分钟和 1000 个粉丝,我需要在该分布之后的某个时间生
在 Julia 中,有人实现了正态分布 pdf 或 cdf 来支持任意精度的 BigFloats。 例如,此代码返回 0.0,而实际上这些值应该略有不同。 x = parse(BigFloat, "2
给定具有上限和下限误差的平均值,计算分割正态分布的最佳方法是什么? 到目前为止我已经: from random import choice, gauss def random_split_normal
我希望用户指定分布的范围 delta、sigma 以及它应该产生的随机值的数量。但是在 Iron Python 中生成具有正态分布的随机值的最佳方法是什么?我在 NumPy 中找到了一个可以执行此操作
我的说明:编写一个程序,开始询问用户正态分布的均值 u 和标准差 s(参见 wiki article) 程序然后要求 N,然后要求 N 个值 x。对于每个 x,它都会将 f(x) 写到屏幕上。请注意,
通用的 Accept 拒绝算法和往常一样。 1 从 Unif[0,1] 生成 U 1 ,U 2 ,U 3 2 X ← −log(U 1 ) 3 if U 2 > exp(−0.5(X − 1) 2 )
我需要计算两条曲线之间的面积。我有很多数据,所以我想以编程方式进行。 基本上,我总是有 2 个正态分布,根据平均值和标准差计算得出。然后我想计算它们相交的程度。这是一个 example我的意思,还有一
我想知道 JavaScript 函数 Math.random 是否使用正态分布(相对于均匀分布)。 如果不是,我怎样才能得到使用正态分布的数字?对于创建随机正态分布数字的算法,我尚未在 Interne
我想在 d3.js 中创建正态分布图(钟形曲线)。 像这样[ http://statwiki.ucdavis.edu/@api/deki/files/73/a9f781e1b0891ceedd50cd
我的教授正在模拟客户到达银行的情况。它表示客户到达时遵循均值 3.5 和标准偏差 1.3 的正态分布。 问题是我很难理解为什么使用这段代码。我相信他提供的代码正在接收一个流、平均值和标准差来生成随机数
我正在生成一些随机数并出现可疑行为。这是我的代码: // initialized earlier... in the constructor of a class boost::mt1
用 ruby 生成正态分布随机数的代码是什么? (注意:我回答了我自己的问题,但我会等几天再接受,看看是否有人有更好的答案。) 编辑: 为此,我查看了两次搜索产生的 SO 上的所有页面: +“正态
我尝试编写 R 代码来查找 mu s.t. 的值。正态分布满足概率 P(N(mu, 1)>1.96)=0.95 (即 P(Z>1.96)=0.95 其中 Z~ N(mu, 1) 和 mu 是我想要得到
我是一名优秀的程序员,十分优秀!