我正在尝试应用此处描述的方法2:Gaussian Distribution。 问题是我有一个4个数字的数组,范围从0到1,我想为该范围生成高斯分布。我编码了这个,但它不正确。我哪里错了?
float a[3]={0.3,0.7,0.2,0.1};
for (int k=0; k<3; k++) {
for (int k1=1; k<4; k++) {
if(phase == 0) {
U = (rand() + a[k]) / (RAND_MAX + a[k1]);
V = rand() / (RAND_MAX + a[k]);
Z = sqrt(-2 * log(U)) * sin(2 * pi * V);
} else Z = sqrt(-2 * log(U)) * cos(2 * pi * V);
phase = 1 - phase;
printf("\n%f",z);
}
}
谢谢:)