如何在C语言中生成正态分布的随机数,要源代码~谢谢
头一次听说随机数还可以是正态分布的。lz介绍具体点,要实现什么
不用加分,我做过,用来产生图像的高斯噪声,也就是你要的正态分布.
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
int main(int argc, char *argv[])
{
int i;
int a[N];
srand(time(NULL));
for(i=0;i<N;i++)
a[i]=rand()%100+1;
printf("生成的随机数为:\n");
for(i=0;i<N;i++)
{
printf("%5d",a[i]);
if((i+1)%10==0)
printf("\n");
}
system("PAUSE");
return 0;
}
输出结果如下:
生成的随机数为:
41 15 82 1 23 51 16 96 92 17
86 71 87 69 74 5 50 18 42 52
46 34 52 18 40 74 79 35 22 36
65 94 80 91 18 72 61 79 4 11
61 30 95 55 11 19 38 87 78 52
95 30 99 53 99 99 10 79 70 33
91 85 10 99 47 58 93 41 19 71
56 60 10 24 73 87 18 38 13 73
57 22 91 4 37 60 67 58 85 48
46 7 57 100 73 96 60 44 24 23
请按任意键继续. . .
如何在C语言中生成正态分布的随机数,要源代码~谢谢
随机生成一百个1至100的随机数。include <stdio.h> include <stdlib.h> include define N 100 int main(int argc, char *argv[]){ int i;int a[N];srand(time(NULL));for(i=0;i<N;i++)a[i]=rand()%100+1;printf("生成的随机数为:\\n");for(i=0;i<N;i++){ printf("%5...
如何在VC++中取得正态分布的随机数?
\/\/生成一组-1到1之间的符合标准正态分布的随机数 \/\/参数:\/\/ double* dRands 用于保存生成的随机数的数组 \/\/ int nCount 数组大小,即随机数的个数 void Rand(double* dRands, int nCount){ srand(GetTickCount());for(int i = 0; i < nCount; i++){ int nRand = rand()...
如何用C语言生成[0.01,2]之间符合正态分布的随机数。。。注意是正态分 ...
}}把生成的数据放入txt文件中,再导入matlab中,查看是否符合正态分布。matlab中用normplot()画图如下:很接近红线,说明很符合正态分布。再用以下代码进行精确性分析:得到H1=0,说明确实是正态分布。。。
如何产生正态分布的随机数
手机版 我的知道 如何产生正态分布的随机数 搜索资料 我来答 分享 微信扫一扫 网络繁忙请稍后重试 新浪微博 QQ空间 举报 浏览1 次 本地图片 图片链接 提交回答 匿名 回答自动保存中为你推荐:特别推荐喝茶等于喝农药?又被套路了 为什么民航飞机连个降落伞都没有? 我们的月亮是从哪里来的? 美国癌症死亡...
如何产生正态分布的随机数
•更好的:Box-Muller算法,在很长时间内都是生成正态分布随机数的"标准"算法。Box-Muller算法的特点是效率高,并且计算过程比较简单(只用到了初等函数)。参见:Box-Muller transform •目前最好的(相较于其它实用算法):ziggurat算法,效率很高,很多现代的编程语言都使用了这一算法。zig...
如何产生正态分布的随机数?
回答:这个要看你的具体需求,有几种方法可以推荐。 首先最简单:rejection sampling,思维方式非常简单,容易实现,但效率很差更复杂:逆提供,直接使用累积分布函数的逆函数(CDF)生成随机数,但涉及更复杂的计算误差函数的小块土地(非初等函数)更好:盒子-穆勒算法,生成在很长一段时间的正态分布随机数的“标准...
如何用c语言生成一个正态分布的样本
不用加分,我做过,用来产生图像的高斯噪声,也就是你要的正态分布.1.首先你的样本应该是有一定范围的吧,我假设它是从1-255 2.根据你的方差和期望,把样本代进去,算出该样本出现的概率 3.然后根据概率知识,你做一个累积概率 4.接着你用随机数产生一个0-1之间的均匀分布 5.看这个数落在哪个累积...
中心极限定理的应用之一:生成正态分布的随机数
那么,正态分布随机数是如何生成的呢?在统计软件如R语言中,有专门的函数实现这一功能。例如,R语言的`rnorm`函数,其源代码位于`R-3.5.1\/src\/nmath\/rnorm.c`。尽管我们可以从函数调用和相关讨论中了解到一些实现逻辑,但具体的源码通常不公开。通过查阅相关资源,我们得知正态分布的生成算法是...
正态分布中的随机数是如何求得的?
这样,Z'就变成了服从标准正态分布N(0,1)的随机变量。举俩例子吧。例一、Z服从N(0,1)。求P(|Z|≥2)。由于Z已经服从标准正态分布N(0,1),那么Z'=Z,不必转化了。P(|Z|≥2)=P(Z≥2)+P(Z<=-2)=2*P(Z≥2)=2*(1-P(Z<=2))查表可知,P(Z<=2)=0.9772,所以P(|Z|≥2...
编写一个c语言程序,能够产生100个在0-1区间内服从正态分布的随机数
既然产生的不是伪随机数,那么随机源就是问题的关键。随机源可以通过侦听和统计系统中的各种事件来模拟实现;这是一个很难的问题。通过C调用Matlab的功能就简单多了。