登录论坛

查看完整版本 : 如何产生区间内服从正态分布的随机数


jxzl80926
2008-09-02, 09:17
各位大虾:
我想例如产生区间 [30,100] 服从平均值=77 标准差=16 的正态分布80个数据 .如何用matlab实现,请给予解答,不胜感激!谢谢

song1987_01
2008-09-02, 19:44
a=77+sqrt(16)*rand(1,80) %产生服从平均值=77 标准差=16 的正态分布80个数据的行向量
b=30+(100-30)*rand(1,80) %产生区间 [30,100] 的行向量
两种方法结合就可以满足要求了吧!

Log54
2008-09-04, 18:56
楼上给出算法只能得到均匀分布。要正态分布得用randn函数。
我不太明白你是否一定要求随机数处于那个区间。因为正态分布的随机数可能超出那个区间,需要写语句把它们滤掉。
a=77+16*rand(1,160); %产生服从平均值=77 标准差=16 的正态分布160个数据的行向量
a=a((a>30 & a<100));% 保留区间 [30,100]内的行向量
a=a(1:80);%取前80个

Log54
2008-09-04, 18:57
上一贴写错了。

楼上给出算法只能得到均匀分布。要正态分布得用randn函数。
我不太明白你是否一定要求随机数处于那个区间。因为正态分布的随机数可能超出那个区间,需要写语句把它们滤掉。
a=77+16*randn(1,160); %产生服从平均值=77 标准差=16 的正态分布160个数据的行向量
a=a((a>30 & a<100));% 保留区间 [30,100]内的行向量
a=a(1:80);%取前80个

jxzl80926
2008-09-08, 14:04
非常感谢,我再试一下

zhaohai731
2010-03-15, 09:20
我试过了,可以生成,新手学习中,感谢分享!