matlab中的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 為隨機數生成器提供種子,以使 randrandi 和 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') 

根據當前時間為隨機數生成器提供種子。這樣,randrandi 和 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') 將 randrandi 和 randn 使用的隨機數生成器的設置重置為其默認值。這樣,會生成相同的隨機數,就好像您重新啟動了 MATLAB。默認設置是種子為 0梅森旋轉生成器

2.5用法五:scurr = rng和rng(s) 

功能在上述的代碼中可以看到

2.6sprev = rng(...)

 返回 randrandi 和 randn 使用的隨機數生成器的以前設置,然后更改這些設置。

使用傳統生成器。

sprev = rng(0,'v5uniform')

sprev = 
     Type: 'twister'
     Seed: 0
    State: [625x1 uint32]

x = rand

x =

    0.9501
通過調用 rng 還原以前的設置。

rng(sprev)

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM