查看完整版本 : 【求助】新人求助!如果生成符合区间为(-1,1)的标准正态分布随机数!
chenhuips2
2007-05-19, 17:51
RT
最近因工作需要写小工具!
均值分布随机数不符合工具要求~
所以需要生成符合正态分布随机数~
但是不知道怎么弄~
请高手解答!
3Q!
:confused: :confused: :confused:
ciji1995
2007-05-19, 18:05
先用normrnd(mu,sigma),然后再sign一下行不?
chenhuips2
2007-05-19, 18:12
先用normrnd(mu,sigma),然后再sign一下行不?
这个不行啊~
sign是取符号,
结果出来不是-1就是1。
我需要的是生成一组以标准正太分布在(-1,1)之间的的随机数!
ciji1995
2007-05-19, 18:23
哦,刚没注意,再想想:confused:
比如:
>> sin(rand(1,100))
ans =
Columns 1 through 10
0.8135 0.2291 0.5703 0.4671 0.7779 0.6904 0.4408 0.0185 0.7321 0.4302
Columns 11 through 20
0.5773 0.7117 0.7967 0.6730 0.1754 0.3947 0.8049 0.7937 0.3989 0.7794
Columns 21 through 30
0.0579 0.3456 0.7265 0.0099 0.1384 0.2014 0.1974 0.5678 0.2688 0.1975
Columns 31 through 40
0.0153 0.6793 0.4305 0.8027 0.4493 0.4065 0.7488 0.5013 0.2013 0.6227
Columns 41 through 50
0.7434 0.0196 0.6298 0.3704 0.7391 0.4819 0.6514 0.4159 0.2999 0.1885
Columns 51 through 60
0.1922 0.6305 0.2982 0.5156 0.1503 0.6426 0.3694 0.7579 0.7537 0.5593
Columns 61 through 70
0.4764 0.7832 0.7323 0.6011 0.7298 0.6133 0.3353 0.2857 0.3346 0.5090
Columns 71 through 80
0.6647 0.3044 0.7436 0.5380 0.3620 0.6463 0.5198 0.4303 0.6401 0.5821
Columns 81 through 90
0.7137 0.8174 0.4991 0.7708 0.1721 0.8304 0.2681 0.2497 0.7680 0.6723
Columns 91 through 100
0.1361 0.0118 0.7795 0.1978 0.2943 0.6143 0.2806 0.4522 0.0647 0.8351
chenhuips2
2007-05-19, 19:40
比如:
>> sin(rand(1,100))
ans =
Columns 1 through 10
0.8135 0.2291 0.5703 0.4671 0.7779 0.6904 0.4408 0.0185...
请问为什么要加sin函数?
可以解释一下机制吗?
rand(m,n)产生正态分布的m行n列随机数矩阵,其均值为0,标准差为1。但产生的数也有比1大比-1小的,所以我加个sin,但现在想想那也不能加,呵呵
chenhuips2
2007-05-20, 17:18
rand(m,n)产生正态分布的m行n列随机数矩阵,其均值为0,标准差为1。但产生的数也有比1大比-1小的,所以我加个sin,但现在想想那也不能加,呵呵
rand()
只是在(0,1)区间上产生均值分布的随机数。
现在我我对自己写得工具做了修改~
如果能够在(0,1)区间产生正态分布随机数也是可以使用的~
但是就是找不到合适的命令和方法来实现他~
chenhuips2
2007-05-21, 09:53
哦,不好意思
是randn(m,n)
randn(m,n)所支持得区间貌似是(-无穷,+无穷)
我用过randn(),normrnd()生成过几十万个随机数,发现其中似乎没有随机数得模能够超过5得。
所以我考虑用下面这种方法实现:
(randn(m,n)+5)/10;来实现。
可以考虑追加判断出现负数和大于1得数删除掉~
呵呵,那你试试吧
或者你randn之后再找出最大值,然后把所有数初以它试试
chenhuips2
2007-05-21, 16:12
呵呵,那你试试吧
或者你randn之后再找出最大值,然后把所有数初以它试试
感觉还能用~
生成了数十W随机数~
用MAX找过基本没看到超过5得
所以我选择用10做除数。
另外已经用SPSS检验过基本满足正态随机分布~
呵呵,应该有直接一点的函数
可惜我还没学到
以后学到的话告诉你吧
vBulletin® v3.8.3,版权所有 ©2000-2025,Jelsoft Enterprises Ltd.