MATLAB--⽣成随机数与重置当前随机数种⼦rank函数⼏种常⽤的表达式:
X = rand()
X = rand 返回⼀个在区间 (0,1) 内均匀分布的随机数。
>> x = rand
x =
0.8147
X = rand(n)
X = rand(n) 返回⼀个 n×n 的随机数矩阵。
r =rand(5)
r =5×5
0.81470.09750.15760.14190.6557
0.90580.27850.97060.42180.0357
0.12700.54690.95720.91570.8491
0.91340.95750.48540.79220.9340
0.63240.96490.80030.95950.6787
X = rand(sz1,…,szN)
X = rand(sz1,...,szN) 返回由随机数组成的 sz1×...×szN 数组,其中 sz1,...,szN 指⽰每个维度的⼤⼩。
例如:rand(3,4) 返回⼀个 3×4 的矩阵。
>> x =rand(3,4)
x =
0.90580.63240.54690.1576
0.12700.09750.95750.9706
0.91340.27850.96490.9572
指定区间的随机数:
⼀般来说,可以使⽤公式:
r = a +(b-a).*rand(N,1)⽣成区间(a,b)内的 N 个随机数。
例:⽣成⼀个由区间 (-5,5) 内均匀分布的数字组成的 10×1 列向量。
r =-5+(5+5)*rand(10,1)
r =10×1
3.1472
4.0579
-3.7301
4.1338
1.3236
-4.0246
-2.2150
0.4688
4.5751
4.6489
可以看到,上⾯我们⽣成的都是⼩数,⽽不是整数,那么我们也可以使⽤randi(注意不是rand)命令来⽣成指定区间的整数。
随机整数
例:使⽤ randi 函数(⽽不是 rand)⽣成在 10 和 50 之间均匀分布的 5 个随机整数。
matlab生成随机数r =randi([1050],1,5)
r =1×5
4347154735
随机复数:
例:⽣成⼀个实部和虚部位于区间 (0,1) 内的随机复数。
a = rand +1i*rand
a =0.8147+0.9058i
重置随机数⽣成器
随机数⽣成器–类似C语⾔中的伪随机数种⼦,我们让计算机产⽣的随机数其实并不是那么的“随机”。
当初始的随机数种⼦是确定的时候,由它⽣成的⼀系列的数都是确定的,所以我们⼜将此称为伪随机数。
只有我们不断重置当前随机数种⼦的时候(C语⾔中把时间当成随机数种⼦),我们由它产⽣的⼀系列数字才可能看起来是随机的。
既然这样我们也可以保存当前的随机数种⼦,这样做看起来虽然没有任何意义,但不如这样想,当我
们想要的数据是通过某个随机数种⼦⽣存,下次我们还想要⼀模⼀样的数据的时候,我们就⽆从下⼿,唯⼀的做法是保存当前的随机数种⼦,下次继续调⽤我们保存的随机数种⼦即可。
例:保存随机数⽣成器的当前状态并创建⼀个由随机数组成的 1×5 向量。
s = rng;
r =rand(1,5)
r =1×5
0.81470.90580.12700.91340.6324
``将随机数⽣成器的状态恢复为 s,然后创建⼀个由随机数组成的新1×5向量。值与之前相同。
```cpp
rng(s);
r1 =rand(1,5)
r1 =1×5
0.81470.90580.12700.91340.6324
三维数组
例:创建⼀个由随机数组成的 3×2×3 数组。
>> x =rand(3,2,3)
x(:,:,1)=
0.18690.6463
0.48980.7094
0.44560.7547
x(:,:,2)=
0.27600.1626
0.67970.1190
0.65510.4984
x(:,:,3)=
0.95970.2238
0.34040.7513
0.58530.2551
指定随机数的数据类型
例:创建⼀个由其元素为单精度值的随机数组成的 1×4 向量。
r =rand(1,4,'single')
r =1x4 single row vector
0.81470.90580.12700.9134
class(r)
ans =
'single'
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论