25、matlab随机数生成汇总:控制随机数生成器、均匀分布和正态分布的随机数

1、rng:控制随机数生成器

语法

rng(seed,generator) 还指定随机数生成器要使用的算法。

参数

seed :随机数种子 s :随机数生成器设置

generator :随机数算法 "twister" | "simdTwister" | "combRecursive" | "multFibonacci" | "philox" | "threefry"

1)设置和还原生成器设置

说明

指定随机数生成器设置,以使本示例中的结果具备可重复性。将生成器种子设置为 2,将算法设置为梅森旋转,然后保存生成器设置。

代码及运行结果

Matlab 复制代码
rng(2,"twister")
s = rng
x = rand(2,5)

s = 

  包含以下字段的 struct:

     Type: 'twister'
     Seed: 2
    State: [625×1 uint32]


x =

    0.4360    0.5497    0.4204    0.2046    0.2997
    0.0259    0.4353    0.3303    0.6193    0.2668

说明

更改生成器种子和算法,并创建一个新的随机行向量。

代码及运行结果

Matlab 复制代码
rng(1,"philox")
xnew = rand(2,5)

xnew =

    0.5361    0.7753    0.0036    0.8629    0.9576
    0.2319    0.2390    0.5262    0.9974    0.0054

说明

现在还原原始生成器设置并创建一个随机向量

代码及运行结果

Matlab 复制代码
rng(s)
xold = rand(2,5)

xold =

    0.4360    0.5497    0.4204    0.2046    0.2997
    0.0259    0.4353    0.3303    0.6193    0.2668

2、均匀分布和正态分布的随机数

说明

使用 rand、randn 和 randi 函数创建随机数序列,使用 randperm 函数创建随机置换整数向量

语法

语法1:X = rand(n) 返回一个由均匀分布的随机数组成的 n×n 矩阵。

语法2:X = randi(n)随机整数

语法3:X = randn(n) 返回由正态分布的随机数组成的 n×n 矩阵。

语法4:p = randperm(n,k) 返回行向量,其中包含在 1 到 n 之间随机选择的 k 个唯一整数。

1)随机数组成的矩阵

说明

生成一个由介于 0 和 1 之间的均匀分布的随机数组成的 6*6 矩阵。

代码及运行结果

Matlab 复制代码
r = rand(6)

r =

    0.6211    0.8540    0.4281    0.2203    0.5052    0.9646
    0.5291    0.4942    0.0965    0.3498    0.3869    0.5000
    0.1346    0.8466    0.1272    0.4678    0.7936    0.8895
    0.5136    0.0796    0.5967    0.2017    0.5800    0.3416
    0.1844    0.5052    0.2260    0.6404    0.1623    0.5671
    0.7853    0.0653    0.1069    0.4831    0.7008    0.4275

2)指定区间内的随机数

**说明:**8行2列随机数

代码及运行结果

Matlab 复制代码
r = -5 + 5*rand(8,2)

r =

   -2.8163   -2.9686
   -1.1172   -4.8640
   -2.3220   -3.7641
   -0.2313   -4.6643
   -2.2790   -0.0307
   -4.5895   -0.1471
   -3.1683   -0.9987
   -0.7457   -1.9909

3)正态分布随机数组成的矩阵

代码及运行结果

Matlab 复制代码
r = randn(5,5)

r =

    0.7993   -2.4356   -0.8009   -1.2599    0.5003
   -1.9146    1.8796   -0.3064    0.6110   -0.4664
   -0.5855   -0.1841    1.7639   -0.5998   -0.0152
    0.0593    0.0195    0.1355    0.3987   -0.3804
   -0.5918   -0.5758   -0.4784   -1.2403   -0.4139

4)随机整数

**说明:**生成在 10 和 50 之间均匀分布的2*5 个随机整数。

代码及运算结果

Matlab 复制代码
r = randi([10 50],2,5)

r =

    32    14    11    36    27
    49    22    40    18    36

5) 随机数组成的三维数组

**说明:**创建一个由随机数组成的 3×3×3 数组

代码及运算结果

Matlab 复制代码
r = randi([10 50],2,5)

r =

    32    14    11    36    27
    49    22    40    18    36

>> X = rand([3,3,3])

X(:,:,1) =

    0.6615    0.7780    0.7488
    0.1705    0.1340    0.7986
    0.8817    0.8689    0.5433


X(:,:,2) =

    0.2208    0.3462    0.4197
    0.9185    0.2638    0.5402
    0.5921    0.9139    0.6084


X(:,:,3) =

    0.8262    0.5913    0.6995
    0.6236    0.4893    0.2458
    0.1767    0.5479    0.1866

6) 指定随机数的数据类型

**说明:**创建一个由其元素为单精度值的随机数组成的 3×4 向量。

代码及运算结果

Matlab 复制代码
r = rand(3,4,"single")%单精度随机数
class(r)%类型

r =

  3×4 single 矩阵

    0.1106    0.6294    0.0953    0.2856
    0.2741    0.2952    0.2838    0.4714
    0.0103    0.1873    0.2149    0.5495


ans =

    'single'

7) 现有数组定义的大小

**说明:**创建一个由均匀分布的随机数组成并且大小与现有数组相同的矩阵。

代码及运行结果

Matlab 复制代码
A = [3 2 1; -2 1 2;1 2 3];
sz = size(A);
X = rand(sz)

X =

    0.8451    0.2321    0.8701
    0.9885    0.6433    0.2174
    0.0489    0.1615    0.7418

8) 现有数组定义的大小和数据类型

**说明:**创建一个由单精度随机数组成的 3×3矩阵。 创建一个与 p 具有相同大小和数据类型的由随机数组成的数组。

代码及运行结果

Matlab 复制代码
p = single([3 2 1; -2 1 2;1 2 3]);
X = rand(size(p),"like",p)
class(X)%类型

X =

  3×3 single 矩阵

    0.6530    0.2296    0.0306
    0.7989    0.7046    0.3571
    0.0312    0.0876    0.5898


ans =

    'single'

9) 整数的随机排列

**说明:**生成一个从 1 到 10 的整数的随机排列。

代码及运算结果

Matlab 复制代码
r = randperm(10)

r =

     3     1     2     6    10     4     8     9     5     7

10)排列所选的整数

**说明:**生成一个从整数 1 到 10中随机选择的6唯一整数(没有重复元素)的随机排列。

代码及运算结果

Matlab 复制代码
r1 = randperm(10,6)

r1 =

     7     4     6     2     9     3

11) 控制随机数生成

**说明:**保存随机数生成器的当前状态,并创建一个从 1 到 10 的整数的随机排列。

代码及运算结果

Matlab 复制代码
s = rng;
r = randperm(10)
rng(s)
r1 = randperm(10)

r =

     5     9     6     3     7     2     1    10     8     4


r1 =

     5     9     6     3     7     2     1    10     8     4
相关推荐
2601_9620715713 小时前
【Java报错已解决】org.springframework.beans.factory.BeanCreationException
java·开发语言
淡海水14 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法
开发语言·算法·c#·bag·concurrent·workstealing
leobertlan14 小时前
好玩系列:训练一个神经网络模型指导小孩玩游戏2-大局观教练
算法
CS_Zero15 小时前
C语言sizeof是函数吗?
c语言·开发语言
Tisfy15 小时前
LeetCode 3876.构造奇偶一致的数组 II:三种情况分类讨论(其实还是脑筋急转弯)
算法·leetcode·题解·脑筋急转弯
-今昭-16 小时前
《V2V 迁移实战:将 VMware 虚拟机转为 OpenStack 可用 Glance qcow2 镜像》
开发语言·python
乐迪信息16 小时前
智慧港口船舶AI算法实现在线状态监测
大数据·人工智能·深度学习·算法·计算机视觉
搞科研的小刘选手16 小时前
【西安石油大学、中海油田服务股份有限公司主办 | 北京举办】第八届智能控制、测量与信号处理国际学术会议 (ICMSP 2026)
信号处理·测量·智能控制·学术会议·会议推荐
黑马程序员毕设18 小时前
基于Java的医院药品管理系统的优化设计与实现
java·开发语言·spring boot·小程序·架构·课程设计·毕设
木井巳18 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法