MATLAB 随机数
目录
1、均匀分布的随机数(rand)
X = rand 返回一个在区间 (0,1) 内均匀分布的随机数。
>> X = rand
X =
0.421761282626275
X = rand(n) 返回一个 n×n 的随机数矩阵。
>> X = rand(4)
X =
0.814723686393179 0.632359246225410 0.957506835434298 0.957166948242946
0.905791937075619 0.097540404999410 0.964888535199277 0.485375648722841
0.126986816293506 0.278498218867048 0.157613081677548 0.800280468888800
0.913375856139019 0.546881519204984 0.970592781760616 0.141886338627215
X = rand(sz1,sz2) 返回由随机数组成的 sz1×sz2 数组,其中 sz1,sz2 指示每个维度的大小。
例如:rand(3,4) 返回一个 3×4 的矩阵。
>> X = rand(3,4)
X =
0.915735525189067 0.655740699156587 0.933993247757551 0.743132468124916
0.792207329559554 0.035711678574190 0.678735154857773 0.392227019534168
0.959492426392903 0.849129305868777 0.757740130578333 0.655477890177557
公式 r = a + (b-a).*rand(N,1) 生成区间 (a,b) 内的 N 个随机数。
>> a=2;
>> b=9;
>> r=a+(b-a).*rand(5,1) % 生成一个区间(2,9)内均匀分布的数字组成的5*1列向量
r =
8.718207709612567
4.382700086662933
6.096874256858442
3.566683576437959
7.258869415139570
X = rand(~,typename) 返回由 typename 数据类型的随机数组成的数组。typename 输入可以是 ‘single’ 或 ‘double’。
创建一个由其元素为单精度值的随机数组成的 1×4 向量。
>> r = rand(1,4,'single')
r =
0.0461714 0.0971318 0.8234578 0.6948286
>> class(r) % r的数据类型
ans =
single
>> r1=rand(1,4,'double')
r1 =
0.317099480060861 0.950222048838355 0.034446080502909 0.438744359656398
>> class(r1) % r1的数据类型
ans =
double
X = rand(~,’like’,p) 返回由与p同数据类型同大小的数组。
>> p = single([3 2; -2 1]); % 创建一个由单精度数组成的2×2矩阵
>> X = rand(size(p),'like',p) % 创建一个与 p 具有相同大小和数据类型的由随机数组成的数组
X =
0.6463130 0.7546867
0.7093648 0.2760251
2、均匀分布的伪随机整数(randi)
X = randi(imax) 返回一个介于 1 和 imax 之间的伪随机整数标量。
X = randi(imax,n) 返回 n×n 矩阵,包含区间 [1,imax] 的均匀离散分布的伪随机整数。
>> X = randi(10,2) X = 7 4 5 9
X = randi(imax,sz1,sz2) 返回 sz1×sz2 数组。
>> X = randi(10,3,4) % randi(10,3,4) 返回一个由介于1和10之间的伪随机整数组成的3×4数组。 X = 10 5 2 6 2 1 8 2 6 4 4 7
3、控制随机数生成(rng)
程序中存在随机数时,如果不固定随机数,调试程序时,调试的参数在发生变化,随机数也在发生变化,此时就不清楚是由于参数的变化还是随机数的变化改变了程序的效果。所以在调试程序时,需要固定随机数,使用相同的随机种子,生成可重复的随机数。
现在使用种子 1 初始化生成函数。
>> rng(1);
>> A=rand(3,3) % 创建随机数数组
A =
0.417022004702574 0.302332572631840 0.186260211377671
0.720324493442158 0.146755890817113 0.345560727043048
0.000114374817345 0.092338594768798 0.396767474230670
>> A=rand(3,3) % 重复同样的命令
A =
0.538816734003357 0.204452249731517 0.670467510178402
0.419194514403295 0.878117436390945 0.417304802367127
0.685219500396760 0.027387593197926 0.558689828445752
第一次调用 rand 改变了生成函数的状态,所以第二个结果不同。
现在使用与以前一样的种子重新初始化生成函数。然后将再次生成第一个矩阵 A。
>> rng(1);
A = rand(3,3)
A =
0.417022004702574 0.302332572631840 0.186260211377671
0.720324493442158 0.146755890817113 0.345560727043048
0.000114374817345 0.092338594768798 0.396767474230670
参考文献
如果需要进一步了解随机数,可以查看MathWorks官方文档链接。