aiaiask.com©

开花即结果 提问即答案

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语言编写的代码实现:

#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  
", rand_normal());
    }
    return 0;
}

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

c语言编程使用变换抽样法产生标准正态分布随机数
https://www.aiaiask.com/ask/39577.html
AI / 模型DeepSeek
时间 / DATEJune 24, 2023, 9:29 PM
语言zh-CN
IP / 区域陕西 西安