rng函数

一、matlab中的随机函数有:rand、randn

1、rand功能:生成0-1之间的伪随机数

  1. rand(2)%生成0-1之间的方阵
  2. ans =
  3.  
  4. 0.2785 0.9575
  5. 0.5469 0.9649
  6.  
  7.  
  8.  
  9. rand(1,2)%生成12列的矩阵
  10. ans =
  11.  
  12. 0.1576 0.9706
  13.  
  14.  
  15. rand(1,2,\'double\')%生成12列的类型为double的随机数
  16. ans =
  17.  
  18. 0.9572 0.4854

 2、randn功能:生成标准正态分布的伪随机数(均值为0,方差为1)

使用的例子和上面一样

二、rng函数的功能:控制随机函数的生成

2.1用法一:rng(seed)

rng(seed) 使用非负整数 seed 为随机数生成器提供种子,以使 randrandi 和 randn 生成可预测的数字序列。

(seed用来控制rand和randn函数生成随机数,例如rand(\’seed\’,0)每次生成的随机数都是一样的)

  1. 将当前生成器设置保存在 s 中:
  2. s = rng;
  3. 调用 rand 以生成随机值向量:
  4.  
  5. x = rand(1,5)
  6.  
  7. x =
  8.  
  9. 0.8147 0.9058 0.1270 0.9134 0.6324
  10. 通过调用 rng 还原原始生成器设置。生成一组新的随机值并验证 x y 是否相等:
  11.  
  12. rng(s);
  13. y = rand(1,5)
  14.  
  15. y =
  16.  
  17. 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 使用的随机数生成器的以前设置,然后更改这些设置。

  1. 使用传统生成器。
  2.  
  3. sprev = rng(0,\'v5uniform\')
  4.  
  5. sprev =
  6. Type: \'twister\'
  7. Seed: 0
  8. State: [625x1 uint32]
  9.  
  10. x = rand
  11.  
  12. x =
  13.  
  14. 0.9501
  15. 通过调用 rng 还原以前的设置。
  16.  
  17. rng(sprev)

  

版权声明:本文为andrew-address原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/andrew-address/p/13030190.html