牛仔裤 发表于 2007-6-20 16:51

如何产生正态分布的随机数

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

[ 本帖最后由 eight 于 2007-6-20 17:15 编辑 ]

eight 发表于 2007-6-20 17:14

请看看本版关于信噪比的精华贴
ps:发帖时,请勿使用大量无谓的符号

[ 本帖最后由 ChaChing 于 2010-4-2 22:31 编辑 ]

VibrationMaster 发表于 2007-6-20 17:27

界于(a,b)之上的随机数不可能正态分布。

w89986581 发表于 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)内符合正态分布。

w89986581 发表于 2007-6-20 22:03

回复 #5 牛仔裤 的帖子

vibrationmaster都说过拉,真正的正态分布区间是负无穷到正无穷,无论做什么线形变换都不会变成有限区间的.

牛仔裤 发表于 2007-6-21 09:41

谢谢指点!! 明白了!!!
正态分布的区间是负无穷到正无穷,如果我想产生一系列符合正态分布的随机数,在整个正负无穷的区间内选取(a,b)区间内的数作为样本,样本个数为n,(a+b)/2这一点恰是正态分布的均值,方差为c。请问这样的数列能否获得。谢谢指点。

w89986581 发表于 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);

牛仔裤 发表于 2007-6-21 21:44

十分感谢!3Q!以后请多多指点!

[ 本帖最后由 eight 于 2007-6-21 22:27 编辑 ]

永顿_007 发表于 2010-4-2 17:53

我过来学习中,。
页: [1]
查看完整版本: 如何产生正态分布的随机数