gpt4 book ai didi

c++ - 如何随机生成均值为 0 且标准差为 1 的 double 组?

转载 作者:搜寻专家 更新时间:2023-10-31 00:46:35 24 4
gpt4 key购买 nike

对于我的家庭作业,我要生成一组数字到一个固定点,允许平均值为 0,标准差为 1。我一直主要处理 double 组来尝试这个但我不确定如何实现。

为了生成值,我尝试使用 Box Muller 方法,但我仍然得到一个均值和标准差,仍然偏离标准正态分布的 mean = 1 和 sd = 1 的标记

更新:好的,我刚刚意识到我的错误。对于 box muller,我将 2 误输入为 3。现在解决了这个问题。

//Create Standard Normal Distribution
void std_find(double a[],double s[], int pop, int samp){//
//generate random numbers for std normal
double *p;
p = a;
//generate numbers in standard normal
double numA = 0;
double numB = 0;
double PI = 3.14159;
//Box_Muller
for(int i = 0; i < pop; i= i+2){
numA = (rand() * 1)/(double)32767;
numB = (rand() * 1)/(double)32767;
*p = sqrt((double)-3 * (log(numB))) * cos((double)3* PI*numA);
p++;
*p = sqrt((double)-3 * (log(numB))) * sin((double)3 *PI*numA);
p++;
}
double popMean = mean(a,(double)pop);
//double popMean = (double)0;
double popSD = sqrt(sampleV(a,pop));
//double popSD = (double)1;
cout << "\nPopulation Mean of the std: " << popMean;
cout << "\nPopulation Standard deviance of std: " << popSD;
//population created, now to create sample
sample(a,s,samp,popMean,popSD);
}

最佳答案

一个很好的通用方法是生成遵循标准正态分布(定义为 µ=0 和 σ=1 的正态分布)的数字。看看 Wikipedia article对于正态分布,特别是“从正态分布生成值”部分。

关于c++ - 如何随机生成均值为 0 且标准差为 1 的 double 组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4967883/

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