主要内容

创建随机数数组

MATLAB®使用算法生成伪随机而且pseudoindependent数字。这些数字在数学意义上并不是严格的随机和独立的,但它们通过了各种随机性和独立性的统计检验,它们的计算可以重复用于测试或诊断目的。

兰德兰迪randn,randperm函数是创建随机数数组的主要函数。的rng函数允许您控制生成随机数的种子和算法。

随机数函数

有四个基本的随机数函数:兰德兰迪randn,randperm.的兰德函数返回从均匀分布中抽取的0到1之间的浮点数。例如:

rng (“默认”) r1 = rand(1000,1);
r1是一个1000乘1的列向量,其中包含从均匀分布中绘制的实浮点数。所有的值r1是在开放区间(0,1)。这些值的直方图大致是平坦的,这表明相当均匀的数字抽样。

兰迪函数返回从离散均匀分布中抽取的整数值。例如,

R2 = randi(10,1000,1);
r2是一个1000乘1的列向量,包含从离散均匀分布中抽取的整数值,其范围在闭合区间[1,10]内。这些值的直方图大致是平的,这表明1到10之间的整数抽样相当均匀。

randn函数返回从标准正态分布绘制的实浮点数数组。例如:

R3 = randn(1000,1);
r3是一个1000乘1的列向量,包含从标准正态分布中抽取的数。的直方图r3近似正态分布,均值为0,标准差为1。

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

R4 = randperm(15,5);
r4是一个1乘5的数组,包含从范围[1,15]中随机选择的整数。不像兰迪,返回一个包含重复值的数组randperm没有重复值。

连续调用这些函数返回不同的结果。此行为对于创建几个不同的随机值数组非常有用。

随机数发生器

MATLAB提供了几个生成器算法选项,表中总结了这些选项。

价值 发电机的名字 发电机的关键字
“旋风” 梅森扭扭器(MATLAB启动时默认流使用) mt19937ar
“simdTwister” simd导向的快速梅森扭扭机 dsfmt19937
“combRecursive” 组合多重递归 mrg32k3a
“multFibonacci” 乘法滞后斐波那契 mlfg6331_64
“philox” Philox 4x32发电机,10发子弹 philox4x32_10
“threefry” 三炸4x64发电机,20发子弹 threefry4x64_20
v4的 遗留的MATLAB版本4.0生成器 mcg16807
“v5uniform” 遗留的MATLAB 5.0版统一生成器 swb2712
“v5normal” 传统MATLAB 5.0版正规生成器 shr3cong

使用rng属性所使用的种子和生成器兰德兰迪randn,randperm功能。例如,rng(0,捻线机)将发电机重置为默认状态。若要避免在MATLAB重新启动时出现随机数数组的重复,请参见为什么随机数在启动后重复?

有关控制随机数生成器的状态以使用相同的随机数重复计算,或确保在重复计算中使用不同的随机数的详细信息,请参见控制随机数生成

随机数数据类型

兰德而且randn默认情况下,函数以双精度生成值。

rng (“默认”) A = rand(1,5);类(一)
Ans = 'double'

要显式地将类指定为double:

rng (“默认”) B = rand(1,5,“双”);类(B)
Ans = 'double'
isequal (A, B)
Ans = 1

兰德而且randn还可以生成单精度值。

rng (“默认”A = rand(1,5,“单一”);类(一)
Ans =“单身”

这些值与您强制转换前一个示例中的双精度值相同。不管返回什么类型的值,函数从中抽取的随机流都以相同的方式前进。

A、B
A = 0.8147 0.9058 0.1270 0.9134 0.6324 b = 0.8147 0.9058 0.1270 0.9134 0.6324

兰迪万博1manbetx支持整型和单精度或双精度。

A = randi([1 10],1,5,“双”);类(一)
Ans = 'double'
B = randi([1 10],1,5,“uint8”);类(B)
Ans = 'uint8'

另请参阅

||||

相关的话题