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.8147    0.0975    0.1576    0.1419    0.6557
    0.9058    0.2785    0.9706    0.4218    0.0357
    0.1270    0.5469    0.9572    0.9157    0.8491
    0.9134    0.9575    0.4854    0.7922    0.9340
    0.6324    0.9649    0.8003    0.9595    0.6787

X = rand(sz1,…,szN)

X = rand(sz1,...,szN) 返回由随机数组成的 sz1×...×szN 数组,其中 sz1,...,szN 指示每个维度的大小。

例如:rand(3,4) 返回一个 3×4 的矩阵。

>> x = rand(3,4)

x =

    0.9058    0.6324    0.5469    0.1576
    0.1270    0.0975    0.9575    0.9706
    0.9134    0.2785    0.9649    0.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 个随机整数。

r = randi([10 50],1,5)
r = 1×5

    43    47    15    47    35

随机复数:

例:生成一个实部和虚部位于区间 (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.8147    0.9058    0.1270    0.9134    0.6324
``将随机数生成器的状态恢复为 s,然后创建一个由随机数组成的新 1×5 向量。值与之前相同。

```cpp
rng(s);
r1 = rand(1,5)
r1 = 1×5

    0.8147    0.9058    0.1270    0.9134    0.6324

三维数组

例:创建一个由随机数组成的 3×2×3 数组。

>> x =rand(3,2,3)

x(:,:,1) =

    0.1869    0.6463
    0.4898    0.7094
    0.4456    0.7547


x(:,:,2) =

    0.2760    0.1626
    0.6797    0.1190
    0.6551    0.4984


x(:,:,3) =

    0.9597    0.2238
    0.3404    0.7513
    0.5853    0.2551

指定随机数的数据类型

例:创建一个由其元素为单精度值的随机数组成的 1×4 向量。

r = rand(1,4,'single')
r = 1x4 single row vector

    0.8147    0.9058    0.1270    0.9134

class(r)
ans = 
'single'
发布了84 篇原创文章 · 获赞 18 · 访问量 5805

猜你喜欢

转载自blog.csdn.net/qq_44486550/article/details/105441130
今日推荐