一、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)