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

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

#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数值很小的时候。也有其他实现方法,下次再说。

发布了44 篇原创文章 · 获赞 68 · 访问量 5123

猜你喜欢

转载自blog.csdn.net/qq_25404477/article/details/102843168
今日推荐