【C语言】如何产生正态分布或高斯分布随机数

mac2024-07-10  46

使用中心极限定理(大数定理)将几个平均分布随机数加起来,从而产生正态分布或高斯分布随机数(有缺点)。

#include <stdio.h> #include <stdlib.h> #include <math.h> #define NSUM 23 double GaussRand() { double x = 0; int i; for (size_t i = 0; i < NSUM; i++) { x += (double)rand() / RAND_MAX; x -= NSUM / 2.0; x /= sqrt(NSUM / 12.0); return x; } } int main() { printf("%lf", GaussRand()); return 0; }

这种方法实现起来虽然简单,但还是比较差的,尤其是当NSUM数值很小的时候。也有其他实现方法,下次再说。

最新回复(0)