Main Content

rand

均匀分布的随机数

说明

X = rand 返回从区间 (0,1) 的均匀分布中得到的随机标量。

示例

X = rand(n) 返回一个由均匀分布的随机数组成的 n×n 矩阵。

示例

X = rand(sz1,...,szN) 返回由随机数组成的 sz1×...×szN 数组,其中 sz1,...,szN 指示每个维度的大小。例如:rand(3,4) 返回一个 3×4 的矩阵。

示例

X = rand(sz) 返回由随机数组成的数组,其中大小向量 sz 定义 size(X)。例如:rand([3 4]) 返回一个 3×4 的矩阵。

示例

X = rand(___,typename) 返回由 typename 数据类型的随机数组成的数组。typename 输入可以是 "single""double"。您可以使用上述语法中的任何输入参数。

示例

X = rand(___,"like",p) 返回一个与 p 类似的由随机值组成的数组,它具有与 p 相同的数据类型和复/实性(实数或复数)。您可以指定 typename"like",但不能同时指定两者。

X = rand(s,___) 从随机数流 s 而不是默认全局流生成数字。要创建一个流,请使用 RandStream。您可以指定 s,后跟上述语法中的任何输入参数组合。

示例

全部折叠

生成一个由介于 0 和 1 之间的均匀分布的随机数组成的 5×5 矩阵。

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

生成一个由区间 (-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

一般来说,可以使用公式 r = a + (b-a).*rand(N,1) 生成区间 (a,b) 内的 N 个随机数。

使用 randi 函数(而不是 rand)生成在 10 和 50 之间均匀分布的 5 个随机整数。

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

    43    47    15    47    35

保存随机数生成器的当前状态并创建一个由随机数组成的 1×5 向量。

s = rng;
r = rand(1,5)
r = 1×5

    0.8147    0.9058    0.1270    0.9134    0.6324

将随机数生成器的状态恢复为 s,然后创建一个由随机数组成的新 1×5 向量。值与之前相同。

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 = 
X(:,:,1) =

    0.8147    0.9134
    0.9058    0.6324
    0.1270    0.0975


X(:,:,2) =

    0.2785    0.9649
    0.5469    0.1576
    0.9575    0.9706


X(:,:,3) =

    0.9572    0.1419
    0.4854    0.4218
    0.8003    0.9157

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

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

    0.8147    0.9058    0.1270    0.9134

class(r)
ans = 
'single'

创建一个由均匀分布的随机数组成并且大小与现有数组相同的矩阵。

A = [3 2; -2 1];
sz = size(A);
X = rand(sz)
X = 2×2

    0.8147    0.1270
    0.9058    0.9134

它是一种将前两行代码合并成一行的常见模式:

X = rand(size(A));

创建一个由单精度随机数组成的 2×2 矩阵。

p = single([3 2; -2 1]);

创建一个与 p 具有相同大小和数据类型的由随机数组成的数组。

X = rand(size(p),"like",p)
X = 2x2 single matrix

    0.8147    0.1270
    0.9058    0.9134

class(X)
ans = 
'single'

从一个方域上的均匀分布生成 10 个实部和虚部位于区间 (0,1) 内的随机复数。

a = rand(10,1,"like",1i)
a = 10×1 complex

   0.8147 + 0.9058i
   0.1270 + 0.9134i
   0.6324 + 0.0975i
   0.2785 + 0.5469i
   0.9575 + 0.9649i
   0.1576 + 0.9706i
   0.9572 + 0.4854i
   0.8003 + 0.1419i
   0.4218 + 0.9157i
   0.7922 + 0.9595i

输入参数

全部折叠

方阵的大小,指定为整数值。

  • 如果 n0,则 X 为一个空矩阵。

  • 如果 n 为负数,则将其视为 0

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

每个维度的大小,指定为包含整数值的单独参数。

  • 如果任一维度的大小为 0,则 X 为空数组。

  • 如果任何维度的大小为负值,则其将被视为 0

  • 对于第二个维度以上的维度,rand 忽略大小为 1 的尾部维度。例如,rand(3,1,1,1) 生成由随机数组成的 3×1 向量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

每个维度的大小,指定为由整数组成的行向量。此向量的每个元素指示对应维度的大小:

  • 如果任一维度的大小为 0,则 X 为空数组。

  • 如果任何维度的大小为负值,则其将被视为 0

  • 对于第二个维度以上的维度,rand 忽略大小为 1 的尾部维度。例如,rand([3 1 1 1]) 生成由随机数组成的 3×1 向量。

示例: sz = [2 3 4] 创建一个 2×3×4 数组。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

要创建的数据类型(类),指定为 "double""single" 或提供 rand 支持的其他类的名称。

示例: rand(5,"single")

要创建的数组的原型,指定为数值数组。

示例: rand(5,"like",p)

数据类型: single | double
复数支持:

随机数流,指定为 RandStream 对象。

示例: s = RandStream("dsfmt19937"); rand(s,[3 1])

提示

  • rand 生成的数字序列由均匀伪随机数生成器的内部设置决定,该生成器是 randrandirandn 的基础。您可以使用 rng 控制这一共享的随机数生成器。

扩展功能

版本历史记录

在 R2006a 之前推出

全部展开