gpt4 book ai didi

c - 对于给定的均值和方差,如何在 c 中生成高斯伪随机数?

转载 作者:太空狗 更新时间:2023-10-29 17:18:04 24 4
gpt4 key购买 nike

我这里有一个代码可以生成平均为 0f 1 且标准偏差为 0.5 的随机数。但是我该如何修改这段代码,以便我可以对任何给定均值和方差的高斯随机数进行反代?

#include <stdlib.h>
#include <math.h>
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif

double drand() /* uniform distribution, (0..1] */
{
return (rand()+1.0)/(RAND_MAX+1.0);
}

double random_normal()
/* normal distribution, centered on 0, std dev 1 */
{
return sqrt(-2*log(drand())) * cos(2*M_PI*drand());
}

int main()
{

int i;
double rands[1000];
for (i=0; i<1000; i++)
rands[i] = 1.0 + 0.5*random_normal();
return 0;

}

最佳答案

I have a code here which generates random numbers having a mean 0f 1 and std deviation of 0.5. but how do i modify this code so that i can denerate gaussian random numbers of any given mean and variance?

如果 x 是来自高斯分布的随机变量,均值为 μ,标准差为 σ,则 αx+β 将具有均值 αμ+β 和标准差 |α|σ

事实上,您发布的代码已经进行了这种转换。它从一个均值为 0、标准差为 1 的随机变量开始(从实现了 Box–Muller transform 的函数 random_normal 获得),然后将其转换为一个均值为 1、标准差为 0.5 的随机变量(在 rands 数组中)通过乘法和加法:

double random_normal();  /* normal distribution, centered on 0, std dev 1 */

rands[i] = 1.0 + 0.5*random_normal();

关于c - 对于给定的均值和方差,如何在 c 中生成高斯伪随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7034930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com