创建随机数数组
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重新启动时出现随机数数组的重复,请参见为什么随机数在启动后重复?
有关控制随机数生成器的状态以使用相同的随机数重复计算,或确保在重复计算中使用不同的随机数的详细信息,请参见控制随机数生成.
随机数数据类型
rng (“默认”) A = rand(1,5);类(一)
Ans = 'double'
要显式地将类指定为double:
rng (“默认”) B = rand(1,5,“双”);类(B)
Ans = 'double'
isequal (A, B)
Ans = 1
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'