使用变换抽样法产生标准正态分布随机数的步骤如下:
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个标准正态分布的随机数。