0写在前面
只列出我认为实用的用法,其他的用法暂未尝试。为了随机数不随代码多次运行而改变,学习了rng函数如何使用。
rng函数用法
(1)rng(seed,'generator')
个人理解:计算机本身内置了长串随机数,使用rng中的种子seed每次都将同一区域的随机数取出,保证随机数的可重复性。而生成器(generator)是用于生成随机数的不同算法。
seed为非负整数
用法:
rng(1,'twister');
a=rand(1,5)
rng(1,'twister');
b=rand(1,5)
a =0.4170 0.7203 0.0001 0.3023 0.1468
b =0.4170 0.7203 0.0001 0.3023 0.1468
上述代码结果如下:
(2)rng(seed)
只指定 MATLAB 随机数生成器的种子。那么generator默认为梅森旋转生成器,无需指定。
用法:
rng(1);
A = rand(3,3)
rng(1);
b = rand(3,3)
A =
0.4170 0.3023 0.1863
0.7203 0.1468 0.3456
0.0001 0.0923 0.3968
b =
0.4170 0.3023 0.1863
0.7203 0.1468 0.3456
0.0001 0.0923 0.3968
(3)rng(s)
这个用法目前在我看来用处没前面的好,因为无法使用种子seed,也就不能在统一代码中多次使用
s = rng;%将当前生成器设置保存在s中
a = rand(1,5)
rng(s);
b = rand(1,5)
a =
0.5388 0.4192 0.6852 0.2045 0.8781
b =
0.5388 0.4192 0.6852 0.2045 0.8781
当为rng指定种子时,该方法就失效了
s = rng(1);%将当前生成器设置保存在s中
a = rand(1,5)
rng(s);
b = rand(1,5)
a =
0.4170 0.7203 0.0001 0.3023 0.1468
b =
0.0274 0.6705 0.4173 0.5587 0.1404