声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 8855|回复: 9

[编程技巧] 如何产生正态分布的随机数

[复制链接]
发表于 2007-6-20 16:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
请问,怎们样用编程可以产生在一定取值范围内符合正态分布的随机数。取值范围(a<x<b)。
谢谢!

[ 本帖最后由 eight 于 2007-6-20 17:15 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-6-20 17:14 | 显示全部楼层
请看看本版关于信噪比的精华贴
ps:发帖时,请勿使用大量无谓的符号

[ 本帖最后由 ChaChing 于 2010-4-2 22:31 编辑 ]
发表于 2007-6-20 17:27 | 显示全部楼层
界于(a,b)之上的随机数不可能正态分布。
发表于 2007-6-20 17:51 | 显示全部楼层
vibrationMaster太严谨拉。

[ 本帖最后由 ChaChing 于 2010-4-2 22:32 编辑 ]
 楼主| 发表于 2007-6-20 21:53 | 显示全部楼层
那么用randn产生的随机数是在(-1,+1)之间产生的正态分布的随机数,如果用k=a+(b-a)/2*(1+randn(100,1))转化一下产生的区间,不知这样可不可以认为数组k在(a,b)内符合正态分布。
发表于 2007-6-20 22:03 | 显示全部楼层

回复 #5 牛仔裤 的帖子

vibrationmaster都说过拉,真正的正态分布区间是负无穷到正无穷,无论做什么线形变换都不会变成有限区间的.
 楼主| 发表于 2007-6-21 09:41 | 显示全部楼层
谢谢指点!! 明白了!!!
正态分布的区间是负无穷到正无穷,如果我想产生一系列符合正态分布的随机数,在整个正负无穷的区间内选取(a,b)区间内的数作为样本,样本个数为n,(a+b)/2这一点恰是正态分布的均值,方差为c。请问这样的数列能否获得。谢谢指点。
发表于 2007-6-21 10:49 | 显示全部楼层
a = 1; b = 10; c =4; n = 1000;
x = randn(1,n);
x = x/std(x)*sqrt(c);
x = x -mean(x)+(a+b)/2;
index = find(x>=a & x<=b);
pseudogauss= x(index);

评分

1

查看全部评分

 楼主| 发表于 2007-6-21 21:44 | 显示全部楼层
十分感谢!3Q!以后请多多指点!

[ 本帖最后由 eight 于 2007-6-21 22:27 编辑 ]
发表于 2010-4-2 17:53 | 显示全部楼层
我过来学习中,。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-29 19:58 , Processed in 0.083849 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表