如何用c语言生成一个正态分布的样本

来源:百度知道 编辑:UC知道 时间:2024/05/16 09:51:44
例如,我给定期望和方差,如何生成一个正态分布的样本,样本数量最好由我给定.最好给出代码.
好吧,我加分,谢谢你帮我想想

不用加分,我做过,用来产生图像的高斯噪声,也就是你要的正态分布.
1.首先你的样本应该是有一定范围的吧,我假设它是从1-255
2.根据你的方差和期望,把样本代进去,算出该样本出现的概率
3.然后根据概率知识,你做一个累积概率
4.接着你用随机数产生一个0-1之间的均匀分布
5.看这个数落在哪个累积概率区间
6.按你要的样本数重复4-5
代码这里我给个matlab程序你参考一下,很好懂的

function [dest] = GeneGauss(expectation,deviation,width,height)
dest=zeros(width,height);
pz=zeros(256);
tempConst1=1/(sqrt(2*pi)*deviation);
tempConst2=2*deviation*deviation;
for i=1:256
pz(i)=tempConst1*exp(-(i-1-expectation)^2/tempConst2);
end
f=zeros(256);
f(1)=pz(1);
for i=2:256
f(i) = f(i-1)+pz(i);
end
for i=1:width
for j=1:height
n=rand;
for k=1:256
if(n<f(k))
dest(i,j)=k-1;
break;
end
end
end
end
end

加分 我就做!