如何由均匀分布随机数产生正态分布随机数

2020-11-23 22:53:50 字数 5192 阅读 9591

1楼:匿名用户

当n个均匀分布互不相关时,它们的叠加就是t分布,而当n趋于无穷时,就是正态分布了

如何用excel产生符合正态分布的随机数值?

2楼:茗童

1、产生符合正态分布的随机数:输入“=

norminv(rand(),mean,standard_dav)”,mean是均值,standard_dav是标准方差。

2、下拉的方式产生需要数目的随机数,全选,复制,再右键点“选择性粘贴”,选“数值”(这样做的目的是为了将公式形式去掉,不然它会再次产生新的随机数,而你被蒙在鼓里),然后排序。

3、另起一栏,输入“=normdist(x,mean,stardard_dav,false)”,x是刚才输入的随机数所在位置,产生概率后,下拉,得到需要的全部随机数对应的概率,然后就可以作出我们熟悉的正态分布曲线了。

3楼:刀剑上的舞者

材料/工具:excel2010

1、新建一个工作簿,准备在a1-f20这个单元格区域(图中红框)内插入随机数值,以数值在“8-88”之间为例

2、单击a1单元格(图中红色箭头所指),并在单元格内输入“=ran”,在弹出的函数菜单中点击“randbetween”(图中蓝色箭头所指)函数

3、randbetween函数的格式如下图中红框所示

4、要填入数值范围的两端数值,并以逗号分开按本例则填入内为“=randbetween(8,88)”(图中蓝框)

5、回车后得到一个随机数值(图中红框),利用填充柄(图中红色箭头所指)将公式填充至“f”列(图中蓝色箭头所指)

6、再利用填充柄(图中红色箭头所指)将公式填充至“20”行(图中蓝色箭头所指)

7、得到最终的效果如下图所示完成设置

4楼:匿名用户

这样的工具其实excel早已为我们做好了

进入“工具”→“加载宏”,勾选“分析工具库”。如果你在安装excel的时候没有安装过加载宏,系统会自行安装(有的时候会问你原安装程序在**)。

然后再进入“工具”,这里就可看到“数据分析”这一选项了。进入后选择“随机数生成器”,接下去就易如反掌了。

附带说一下,“加载宏”里有很多好东西,确实值得我们探索啊。

5楼:抹茶**

所以楼主得到解决方法了吗?求分享

c++中如何产生均匀分布的随机数

6楼:

c 产生正态分布随机数的方法好像是求若干均匀分布的和,不知是否与之相似

matlab 中如何产生0-1上均匀分布的随机数

7楼:匿名用户

在matlab 中产生0-1上均匀

分布的随机数方法如下:

方法1、对于问题,如果 y 是m*n的服从0~1均匀分布的随机矩阵:

y = rand(m,n);

方法2、用统计工具箱,y = unifrnd(0,1,m,n).

另外,提供常用的函数分布供参考:

1、 均匀分布u(a,b)

产生m*n阶[a,b]均匀分布u(a,b)的随机数矩阵:unifrnd (a,b,m, n)

2、0-1分布u(0,1)

产生m*n阶[0,1]均匀分布的随机数矩阵:rand (m, n)

3、二类分布binornd(n,p,mm,nn),即产生mm*nn均值为n*p的矩阵

4、产生m*n阶离散均匀分布的随机数矩阵:

unidrnd(n,mm,nn) 产生一个数值在1-n区间的mm*nn矩阵;

5、产生mm nn阶期望值为 的指数分布的随机数矩阵:exprnd ( ,mm, nn).

8楼:匿名用户

对于你的问题,如果 y 是m*n的服从0~1均匀分布的随机矩阵:

y = rand(m,n)

用统计工具箱,

y = unifrnd(0,1,m,n)

9楼:匿名用户

如果 y 是m*n的服从0~1均匀分布的随机矩阵:

y = rand(m,n)

用统计工具箱,

y = unifrnd(0,1,m,n)

10楼:匿名用户

rand函数

a=rand(m,n)

该函数产生一个大小m*n的数组,数组的元素为在区间(0,1)内均匀分布的数

11楼:匿名用户

x=random('unif',0,1)

12楼:dandy的同桌

rand生成的是标准正态分布

matlab如何编程产生正态分布的随机数的程序?

13楼:匿名用户

可以采用box_muller的方法。

box-muller方法是以两组独立的随机数u和v,这两组数在(0,1]上均匀分布,用u和v生成两组独立的标准常态分布随机变量x和y

x=sqrt((-2)*ln(u))*cos(2*pi*v);

y=sqrt((-2)*ln(u))*sin(2*pi*v);

matlab程序

functionnorm_distribution_box_muller

clearall;clc;%清屏

m=input('请输入平均值:');

n=input('请输入标准差:');

t=input('请输入数据长度:');%产生正态分布的随机数

fori=1:t

a=rand;

b=rand;

x1(i)=sqrt((-2)*log(a))*cos(2*pi*b);

x2(i)=sqrt((-2)*log(a))*sin(2*pi*b);

y1=x1*n+m;

y2=x2*n+m;

enddisp(y1);%求平均值和标准差

m1=mean(y1);n1=std(y1);disp(m1);disp(n1);disp(y1);%求平均值和标准差

m2=mean(y2);n2=std(y2);disp(m2);disp(n2);%将数据写入文本文件

fid=fopen('xiefei1.dat','w');z1=y1;fprintf(fid,'%f\t',z1);

fclose(fid);%将数据写入文本文件

fid=fopen('xiefei2.dat','w');z2=y2;

fprintf(fid,'%f\t',z2);fclose(fid);

%绘图subplot(2,1,1);histfit(y1);

xlabel('随机数');ylabel('出现的次数');

%绘图subplot(2,1,2);histfit(y2);

xlabel('随机数');ylabel('出现的次数');

%检验h1=lillietest(y1);%若结果h1为1,则说明零假设不成立,拒绝零假设;否则,结果为0,零假设成立,即原分布为正态分布

disp(h1);

h2=lillietest(y2);%若结果h2为1,则说明零假设不成立,拒绝零假设;否则,结果为0,零假设成立,即原分布为正态分布

disp(h2);

用java产生[0,1]均匀分布的随机数 要算法

14楼:冯春辉

double rand(double r)

其中base为基数,一般去2的整数倍,常数,u、v可以随意取。数组r为只能去一个值的数组。如:doubler=.

15楼:匿名用户

math.random()java math中的random方法 即产生 0-1之间的随机数、。。。算法就是在预定范围内随机(其实还是按照某种特定的规则。。。

)获取取一个数嘛。。

excel 怎样生成一组服从正态分布的随机数

16楼:深圳市励拓软件****

1、产生符合正态分布的随机数:输入“=

norminv(rand(),mean,standard_dav)”,mean是均值,standard_dav是标准方差。

2、下拉的方式产生需要数目的随机数,全选,复制,再右键点“选择性粘贴”,选“数值”(这样做的目的是为了将公式形式去掉,不然它会再次产生新的随机数,而你被蒙在鼓里),然后排序。

3、另起一栏,输入“=normdist(x,mean,stardard_dav,false)”,x是刚才输入的随机数所在位置,产生概率后,下拉,得到需要的全部随机数对应的概率,然后就可以作出我们熟悉的正态分布曲线了。

能不能用excel产生在一定公差范围内的正态分布随机数

17楼:匿名用户

均值=0,标准差=1时,生成size=10000随机数据,使用正态分布函数生成

rx = norm.rvs(size=10000)#生成的随机数据p1 = norm.cdf(-v,loc=0,scale=1)#生成的数据中小于-v的概率

p2 = 1-norm.cdf(v,loc=0,scale=1)#生成的数据中大于v的概率

p=p1+p2#生成的数据中不在范围(-v,v)之间的概率每次生成的随机数据rx中,基本上有10000*p个数据不在范围内总是有一定的概率生成的数据不再范围(-v,v)之内

18楼:

正态分布是一种对称分布,需要平均值和标准偏差两个参数,才能完全确定其分布。而你的要求是平均值、上偏差和下偏差,无法确定你所要求的正态分布。

有两种处理办法供选择:

修正平均值,使上下偏差成为两个相反数,并将其定义为标准偏差。即平均值为99.77,标准偏,0.11

根据所规定的上下偏差,确定一个大致的标准偏差,如0.1,在求值时只截取上下偏差范围内的数。

针对第一种选择,可以用函数:

=norminv(rand(),99.77,0.11)

针对第二种选择,可以用函数:

=if(norminv(rand(),100,0.1)>99.88,99.

88,if(norminv(rand(),100,0.1)>99.66,norminv(rand(),100,0.

1,99.66))

19楼:匿名用户

=100+rand()*(0.12+0.34)-0.34