1.一些常用函数:
(1)rand(······)
它是生成0~1之间(开环,不包含0和1两个数)均匀分布的伪随机数,也就是无穷次试验其中每个数产生的概率是一样的。
R = rand(N) % 生成N×N的矩阵随机数,其中每个元素位于0~1之间
R = rand([M,N,P,…]) % 生成M×N×P×…的矩阵随机数
R = rand(M,N,P,…) % 同上,中括号不是必须
R = rand(…, CLASSNAME) % 生成CLASSNAME类型的随机数,如 ‘double’ or ‘single’
(2)randi(······)
randi(N) 是生成(0,N]间均匀分布的伪随机数,并且数都是整数,所以每个数是位于1到N之间。
R = randi(iMax) % 生成1:iMax之间的均匀分布随机数
R = randi(iMax,m,n) % 生成m×n的1:iMax之间的均匀分布随机数
R = randi([iMin,iMax],m,n) % 生成m×n的iMin:iMax之间的均匀分布随机数
(3)randn(······)
它生成的随机数整体概率为正态分布,均值为0,方差为1;
R = randn(N) % 生成N×N个正态分布的随机数
R = randn(M,N) % 生成M×N个正态分布的随机数
eg:产生16个均值为0.8,方差为0.4的正态分布随机数(即:4阶正态分布矩阵)。
format short %恢复默认输出格式
y=0.8+sqrt(0.4)*randn(4)
(4)rng(······)
让每次程序运行生成的随机数都一样
eg(1).rng('default');
R = rand(1,5); % 每次程序运行生成恒定的1×5随机数
eg(2).s = rng;
R1 = rand(1,5);
rng(s);
R2 = rand(1,5); % R1和R2随机数一样
(5)linspace(······)
产生线性间隔向量
创建一个从a到b,共n个向量
linspace(a,b,n);
(6)binornd(n,p,[M,N,P,…])
生成的随机数服从参数为(N,p)的二项分布,这些随机数排列成MNP… 阶矩阵。如果只写M,则生成M*M矩阵
(7)exprnd(MU)
服从参数为MU的指数分布。
2.其他生成随机数函数
exprnd 指数分布的随机数生成器
exprnd(mu,m,n); 在(0,mu)之间有接近70%的数据,越接近0数据越多
geornd 几何分布的随机数生成器
geornd(P,M,N,…) returns an M-by-N-by-… array.
hygernd 超几何分布的随机数生成器
hygernd(M,K,N,MM,NN,…) returns an MM-by-NN-by-… array.
normrnd 正态(高斯)分布的随机数生成器
normrnd(MU,SIGMA,M,N,…) returns an M-by-N-by-… array.
poissrnd 泊松分布的随机数生成器
poissrnd(LAMBDA,M,N,…) returns an M-by-N-by-… array.
unidrnd 离散均匀分布的随机数生成器
unifrnd 连续均匀分布的随机数生成器
betarnd 贝塔分布的随机数生成器
chi2rnd 卡方分布的随机数生成器
frnd f分布的随机数生成器
gamrnd 伽玛分布的随机数生成器
lognrnd 对数正态分布的随机数生成器
nbinrnd 负二项分布的随机数生成器
ncfrnd 非中心f分布的随机数生成器
nctrnd 非中心t分布的随机数生成器
ncx2rnd 非中心卡方分布的随机数生成器
raylrnd 瑞利分布的随机数生成器
trnd 学生氏t分布的随机数生成器
weibrnd 威布尔分布的随机数生成器
如果要生成除上面这些之外的随机数,需要严密的数学推导,利用这些分布进行构造.
如果推导不出,还可以利用大数定律进行生成,通过一组随机数确定一个随机数的方式。