如何在matlab中生成具有正态分布的随机数

时间:2014-05-27 11:22:24

标签: matlab random

我想生成一个遵循正态分布的随机数,并在某个范围内说[3,17]。 我试过normrnd,但我无法指定它的范围。

1 个答案:

答案 0 :(得分:2)

统计工具箱允许创建截断的分布

警告:这不再是正常分发

数据将不再遵循正态分布,假设将失效,并且通常是一个好主意......

如果没有给出分布的均值或标准差,将使用以下值:

mu = 10; %center of the range
sigma = 14/6; % range covers mu + or - 3*s.d.

可以按如下方式进行分发和截断

pd=makedist('normal','mu',mu,'sigma',sigma)
pd=truncate(pd,3,17);

可以使用random

从此分布生成给定大小的样本
nrows=10;
ncols=5;  
data=random(pd,ncols,nrows);

实施例

hist(random(pd,10e6,1),10000)

enter image description here

可以看出数据落在3到17之间,并且看起来类似于这些边界内的正态分布......但是由于截断它不再正常