我一直在研究一个函数来生成 0 到 1 之间的高斯分布随机随机数。这里的这个网站很有帮助,因为我基本上复制了 Polar Form 的算法以了解该过程,但我无法保持介于 0 和 1 之间的值,包括 0 但不包括 1。如果我是正确的,我相信这个的数学符号是 [0, 1)。您可以提供的任何见解都会很棒。在 Unix 上,它编译为;gcc文件名.c -lm
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int main()
{
int i;
float x, w;
for (i=0; i<50; i++)
{
do {
x = 2.0 * ( (float)rand() / (float)RAND_MAX ) - 1.0;
w = x * x;
}while (w >= 1.0);
w = (float)sqrt( (-2.0 * log( w )) / w );
printf("%f\n", x*w);
}
return 0;
}