您的位置:首页 > 编程语言 > MATLAB

Matlab学习 之 随机数

2016-05-11 11:14 381 查看

matlab中生成随机数

主要有三个函数:rand, randn,randi

1,rand 生成均匀分布的伪随机数。分布在(0~1)之间

主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数

rand(m,n,’double’)生成指定精度的均匀分布的伪随机数,参数还可以是’single’

rand(RandStream,m,n)利用指定的RandStream(我理解为随机种子)生成伪随机数

2,randn 生成标准正态分布的伪随机数(均值为0,方差为1)

主要语法:和上面一样

3, randi 生成均匀分布的伪随机整数

主要语法:randi(iMax)在开区间(0,iMax)生成均匀分布的伪随机整数

randi(iMax,m,n)在开区间(0,iMax)生成mXn型随机矩阵

r = randi([iMin,iMax],m,n)在开区间(iMin,iMax)生成mXn型随机矩阵。

示例验证

均值分布

概率分布图:

y=rand(1,3000000);
hist(y,2000);




散点图:

y=rand(1,3000000);
plot(y)




正态分布

概率分布图:

y=randn(1,3000000);
hist(y,2000);




散点图:

y=randn(1,3000000);
plot(y);




随机种子与伪随机数的重复生成

正常情况下每次调用相同指令例如rand生成的伪随机数是不同的,

例如:

rand(1,3)
rand(1,3)
%matlab的输出为:
ans =
0.139043482536049   0.734007633362635   0.194791464843949
ans =
0.602204766324215   0.937923745019422   0.149285414707192


如何使两个语句生成的随机数相等呢?

你也可以直接使用@RandStream 类的reset静态方法重置种子状态来获取相同的随机生成序列,下面是示例代码:

stream = RandStream.getDefaultStream;%获取默认的随机种子(暂时这么叫,帮助有详细解释)
reset(stream);%重置
rand(stream,1,3)
reset(stream);%重置
rand(stream,1,3)
%matlab的输出为:
ans =
0.814723686393179   0.905791937075619   0.126986816293506
ans =
0.814723686393179   0.905791937075619   0.126986816293506


可以看出生成的随机码是相等的,这样可以用于重复实验上来
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: