本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

创建随机数数组

MATLAB® 使用算法来生成伪随机数和伪独立数。这些数在数学意义上并非严格随机和独立的,但它们能够通过各种随机和独立统计测试,并且其计算可以重复,方便用于测试或诊断目的。

randrandirandnrandperm 函数是创建随机数数组的主要函数。rng 函数允许您控制生成随机数的种子和算法。

随机数函数

有四种基本随机数函数:randrandirandnrandpermrand 函数返回在 0 和 1 之间均匀分布的实数。例如,

r1 = rand(1000,1);
r1 是一个含有均匀分布浮点实数的 1000 x 1 的列向量。r1 中的所有值均处于开区间 (0, 1) 内。这些值的直方图大致上是扁平形状,这表明采样数相当均匀。

randi 函数返回离散均匀分布中的 double 整数值。例如,

r2 = randi(10,1000,1);
r2 是一个包含范围在 1,2,...,10 的离散均匀分布整数值的 1000×1 列向量。这些值的直方图大致上是扁平形状,这表明从 1 到 10 之间采样数相当均匀。

randn 函数返回标准正态分布中的浮点实数数组。例如,

r3 = randn(1000,1);
r3 是一个含有标准正态分布数的 1000 x1 的列向量。r3 的直方图看似大致上均值为 0 且标准差为 1 的正态分布。

可以使用 randperm 函数创建没有重复值的随机整数值数组。例如,

r4 = randperm(15,5);
r4 是一个包含在闭区间 [1、15] 内随机选择的整数值的 1 x 5 数组。与可返回包含重复值的数组的 randi 不同,randperm 返回的数组没有重复值。

接连调用上述任一函数均可返回不同的结果。这种特性适合用于创建几个不同的随机值数组。

随机数生成器

MATLAB 提供几个生成器算法选项,下表对其进行了总结。

关键字生成器多流和子流支持全精度的近期周期
mt19937ar梅森旋转(MATLAB 启动时默认流使用的算法)219937-1
dsfmt19937面向 SIMD 的快速梅森旋转算法 219937-1
mcg16807乘法同余生成器231-2
mlfg6331_64乘法滞后 Fibonacci 生成器2124(251 个流,长度为 272
mrg32k3a组合多递归生成器2191(263 个流,长度为 2127
philox4x32_10执行 10 轮的 Philox 4×32 生成器2193(264 个流,长度为 2129
threefry4x64_20执行 20 轮的 Threefry 4×64 生成器2514(2256 个流,长度为 2258
shr3cong移位寄存器生成器与线性同余生成器求和264
swb2712修正的借位减法生成器21492

使用 rng 函数可设置 randrandirandnrandperm 函数使用的种子和生成器。例如,rng('shuffle','philox') 根据当前时间为 Philox 4×32 生成器设置种子,每次调用它时都会产生一个不同数字序列。

有关详细信息,请参阅控制随机数的生成

另请参阅

| | | |

相关主题