AI智能问答-学无止境 AI解答 c语言编程使用变换抽样法产生标准正态分布随机数

c语言编程使用变换抽样法产生标准正态分布随机数

使用变换抽样法产生标准正态分布随机数的步骤如下:

1. 生成两个均匀分布的随机数u1和u2,范围在(0,1)之间。

2. 计算v1和v2,其中v1和v2分别为:

v1 = sqrt(-2 * log(u1)) * cos(2 * PI * u2)

v2 = sqrt(-2 * log(u1)) * sin(2 * PI * u2)

其中,PI为圆周率,log为自然对数函数,cos和sin为三角函数。

3. 返回v1作为标准正态分布的随机数。

下面是使用C语言编写的代码实现:

“`c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define PI 3.14159265358979323846

double rand_normal()
{
double u1 = rand() / (double)RAND_MAX;
double u2 = rand() / (double)RAND_MAX;
double v1 = sqrt(-2 * log(u1)) * cos(2 * PI * u2);
return v1;
}

int main()
{
int i;
srand(time(NULL));
for (i = 0; i < 10; i++) {
printf("%f\n", rand_normal());
}
return 0;
}
“`

其中,rand()函数用于生成均匀分布的随机数,time(NULL)函数用于初始化随机数生成器。运行程序可以得到10个标准正态分布的随机数。

上一篇
下一篇

发表回复

返回顶部