matlab中的rng函数
rng函数
一、matlab中的随机函数有:rand、randn
1、rand功能:生成0-1之间的伪随机数
- rand(2)%生成0-1之间的方阵
- ans =
- 0.2785 0.9575
- 0.5469 0.9649
- rand(1,2)%生成1行2列的矩阵
- ans =
- 0.1576 0.9706
- rand(1,2,\'double\')%生成1行2列的类型为double的随机数
- ans =
- 0.9572 0.4854
2、randn功能:生成标准正态分布的伪随机数(均值为0,方差为1)
使用的例子和上面一样
二、rng函数的功能:控制随机函数的生成
2.1用法一:rng(seed)
rng(seed)
使用非负整数 seed
为随机数生成器提供种子,以使 rand
、randi
和 randn
生成可预测的数字序列。
(seed用来控制rand和randn函数生成随机数,例如rand(\’seed\’,0)每次生成的随机数都是一样的)
- 将当前生成器设置保存在 s 中:
- s = rng;
- 调用 rand 以生成随机值向量:
- x = rand(1,5)
- x =
- 0.8147 0.9058 0.1270 0.9134 0.6324
- 通过调用 rng 还原原始生成器设置。生成一组新的随机值并验证 x 和 y 是否相等:
- rng(s);
- y = rand(1,5)
- y =
- 0.8147 0.9058 0.1270 0.9134 0.6324
2.2用法二:rng(\’shuffle\’)
根据当前时间为随机数生成器提供种子。这样,rand
、randi
和 randn
会在您每次调用 rng
时生成不同的数字序列。
2.3用法三:rng(seed,generator)、rng(\’shuffle\’,generator)
制定随机数生成的类型,因为我们使用的是算法来生成随机数的,故指定的便是算法的类型
-
\'twister\'
:梅森旋转 -
\'simdTwister\'
:面向 SIMD 的快速梅森旋转算法 -
\'combRecursive\'
:组合多递归 -
\'philox\'
:执行 10 轮的 Philox 4×32 生成器 -
\'threefry\'
:执行 20 轮的 Threefry 4×64 生成器 -
\'multFibonacci\'
:乘法滞后 Fibonacci -
\'v5uniform\'
:传统 MATLAB® 5.0 均匀生成器 -
\'v5normal\'
:传统 MATLAB 5.0 正常生成器 -
\'v4\'
:传统 MATLAB 4.0 生成器
2.4用法四:rng(\’default\’)
rng(\'default\')
将 rand
、randi
和 randn
使用的随机数生成器的设置重置为其默认值。这样,会生成相同的随机数,就好像您重新启动了 MATLAB。默认设置是种子为 0 的梅森旋转生成器。
2.5用法五:scurr = rng和rng(s)
功能在上述的代码中可以看到
2.6sprev = rng(…)
返回 rand
、randi
和 randn
使用的随机数生成器的以前设置,然后更改这些设置。
- 使用传统生成器。
- sprev = rng(0,\'v5uniform\')
- sprev =
- Type: \'twister\'
- Seed: 0
- State: [625x1 uint32]
- x = rand
- x =
- 0.9501
- 通过调用 rng 还原以前的设置。
- rng(sprev)