- Matlab 教程
- MATLAB - 首页
- MATLAB - 概述
- MATLAB - 功能
- MATLAB - 环境设置
- MATLAB - 编辑器
- MATLAB - 在线版
- MATLAB - 工作区
- MATLAB - 语法
- MATLAB - 变量
- MATLAB - 命令
- MATLAB - 数据类型
- MATLAB - 运算符
- MATLAB - 日期和时间
- MATLAB - 数字
- MATLAB - 随机数
- MATLAB - 字符串和字符
- MATLAB - 文本格式化
- MATLAB - 时间表
- MATLAB - M 文件
- MATLAB - 冒号表示法
- MATLAB - 数据导入
- MATLAB - 数据导出
- MATLAB - 数据归一化
- MATLAB - 预定义变量
- MATLAB - 决策
- MATLAB - 决策语句
- MATLAB - if 语句
- MATLAB - if-else 语句
- MATLAB - if-elseif-else 语句
- MATLAB - 嵌套 if 语句
- MATLAB - switch 语句
- MATLAB - 嵌套 switch
- MATLAB - 循环
- MATLAB - 循环
- MATLAB - for 循环
- MATLAB - while 循环
- MATLAB - 嵌套循环
- MATLAB - break 语句
- MATLAB - continue 语句
- MATLAB - end 语句
- MATLAB - 数组
- MATLAB - 数组
- MATLAB - 向量
- MATLAB - 转置运算符
- MATLAB - 数组索引
- MATLAB - 多维数组
- MATLAB - 兼容数组
- MATLAB - 分类数组
- MATLAB - 元胞数组
- MATLAB - 矩阵
- MATLAB - 稀疏矩阵
- MATLAB - 表格
- MATLAB - 结构体
- MATLAB - 数组乘法
- MATLAB - 数组除法
- MATLAB - 数组函数
- MATLAB - 函数
- MATLAB - 函数
- MATLAB - 函数参数
- MATLAB - 匿名函数
- MATLAB - 嵌套函数
- MATLAB - return 语句
- MATLAB - 无返回值函数
- MATLAB - 局部函数
- MATLAB - 全局变量
- MATLAB - 函数句柄
- MATLAB - 滤波器函数
- MATLAB - 阶乘
- MATLAB - 私有函数
- MATLAB - 子函数
- MATLAB - 递归函数
- MATLAB - 函数优先级顺序
- MATLAB - map 函数
- MATLAB - mean 函数
- MATLAB - end 函数
- MATLAB - 错误处理
- MATLAB - 错误处理
- MATLAB - try...catch 语句
- MATLAB - 调试
- MATLAB - 绘图
- MATLAB - 绘图
- MATLAB - 绘制数组
- MATLAB - 绘制向量
- MATLAB - 条形图
- MATLAB - 直方图
- MATLAB - 图形
- MATLAB - 二维线图
- MATLAB - 三维图
- MATLAB - 格式化绘图
- MATLAB - 对数坐标轴图
- MATLAB - 绘制误差条
- MATLAB - 绘制三维等值线图
- MATLAB - 极坐标图
- MATLAB - 散点图
- MATLAB - 绘制表达式或函数
- MATLAB - 绘制矩形
- MATLAB - 绘制频谱图
- MATLAB - 绘制网格曲面
- MATLAB - 绘制正弦波
- MATLAB - 插值
- MATLAB - 插值
- MATLAB - 线性插值
- MATLAB - 二维数组插值
- MATLAB - 三维数组插值
- MATLAB - 多项式
- MATLAB - 多项式
- MATLAB - 多项式加法
- MATLAB - 多项式乘法
- MATLAB - 多项式除法
- MATLAB - 多项式的导数
- MATLAB - 变换
- MATLAB - 变换函数
- MATLAB - 拉普拉斯变换
- MATLAB - 拉普拉斯滤波器
- MATLAB - 高斯-拉普拉斯滤波器
- MATLAB - 逆傅里叶变换
- MATLAB - 傅里叶变换
- MATLAB - 快速傅里叶变换
- MATLAB - 二维逆余弦变换
- MATLAB - 向坐标轴添加图例
- MATLAB - 面向对象
- MATLAB - 面向对象编程
- MATLAB - 类和对象
- MATLAB - 函数重载
- MATLAB - 运算符重载
- MATLAB - 用户定义类
- MATLAB - 复制对象
- MATLAB - 代数
- MATLAB - 线性代数
- MATLAB - 高斯消元法
- MATLAB - 高斯-约旦消元法
- MATLAB - 简化行阶梯形
- MATLAB - 特征值和特征向量
- MATLAB - 积分
- MATLAB - 积分
- MATLAB - 二重积分
- MATLAB - 梯形法则
- MATLAB - 辛普森法则
- MATLAB - 其他
- MATLAB - 微积分
- MATLAB - 微分
- MATLAB - 矩阵求逆
- MATLAB - GNU Octave
- MATLAB - Simulink
- MATLAB - 有用资源
- MATLAB - 快速指南
- MATLAB - 有用资源
- MATLAB - 讨论
MATLAB - 随机数
随机数是从一大组数字中随机选择的数字。计算机生成的随机数称为伪随机数。伪随机数生成利用一种算法,该算法内部利用数学公式生成不可预测的随机数字位。伪随机数在计算机应用中非常有用,例如游戏、密码学等。
Matlab 提供了许多函数,例如 rand、randn 和 randi,可以生成随机数。对于高级随机数,我们可以使用 RandStream 类。
另一个函数 randperm 创建整数的随机排列。
让我们通过示例来了解每个函数。
使用 rand 函数
rand - 此函数将返回均匀分布的随机数。函数的语法如下所述。
语法
a = rand a = rand(n) a = rand(sz1, sz2,.....szn) a = rand(sz) a = rand(_, typename) a = rand(_, “like”, p) a = rand(s,_)
序号 | 语法和描述 |
---|---|
1 | a = rand 这将返回一个 0 到 1 之间的随机数。 |
2 | a = rand(n) 这将返回一个均匀分布的随机数。它将是一个 nxn 矩阵。 |
3 | a = rand(sz1, sz2,.....szn) 这将返回一个大小为 sz1 x szn 的均匀分布的随机数数组。 例如,rand(2,3) 返回一个大小为 2×3 的矩阵。因此,随机数数组的大小将为 2×3。 |
4 | a = rand(sz) 这里的向量大小为 sz。该函数将返回一个大小为 sz 的随机数数组。例如,rand([2,3]) 将返回一个大小为 2×3 的数组。 |
5 | a = rand(_, typename) 此处返回的随机数数组的类型为 typename。例如,“single”、“double”。 |
6 | a = rand(_, “like”, p) 这将为您提供一个与 p 具有相同数据类型或复杂性(实数或复数)的随机数数组。您可以使用 typename 或“like”,但不能同时使用两者。 |
7 | a = rand(s, _) 随机数是从流 s 中创建的。您可以使用 RandStream 创建一个流。 |
让我们看看上面讨论的每种语法的示例。
示例 1
a = rand
执行后的输出如下:
a = 0.9584
在这个例子中,我们只是调用 rand 函数。该值存储在变量 a 中。
给定的值为 0.9584,生成的数值介于 0 到 1 之间。
让我们再次调用 rand 函数。
a= rand
执行后的输出如下:
a = 0.075312
再次使用相同的函数,值现在为 0.075312。
示例 2
在这个例子中,我将尝试使用 n 值调用 rand。
a = rand(4)
执行后的输出如下:
a = 0.750825 0.930217 0.168903 0.781070 0.732294 0.017075 0.545846 0.483156 0.609990 0.311062 0.415960 0.369801 0.871756 0.556813 0.401244 0.225472
我们传递给 rand 的数字是 4。因此,它返回一个大小为 4x4 的矩阵,其中包含如上所示的随机数。
现在让我们使用数字 2 并查看如下所示的 2x2 矩阵:
a = rand(2)
执行后的输出如下:
a = 0.8271 0.5491 0.9997 0.1035
示例 3
在这个例子中,我们将 nxn 矩阵传递给 rand 函数。
a = rand(3,3)
执行后的输出如下:
a = 0.5684 0.3099 0.4883 0.7016 0.8126 0.9140 0.2272 0.4579 0.8909
生成的矩阵大小为 3x3。
让我们检查另一个具有 2x4 矩阵的示例。
a = rand(2,4)
执行后的输出如下:
a = 0.5362 0.6302 0.8595 0.4848 0.3148 0.1463 0.6696 0.5108
示例 4
在这个例子中,我们将使用大小为 [3,4] 的向量数组在 rand 函数中,如下所示
a = rand([3,4])
执行后的输出如下:
a = 8.6458e-01 4.6462e-03 6.8987e-01 5.7768e-01 7.2335e-01 2.8741e-01 3.4124e-01 7.6021e-02 2.8896e-01 6.9273e-01 4.4906e-01 8.4528e-01
输出是一个 3x4 矩阵。
让我们尝试另一个具有 [2,2] 向量数组的示例。
a = rand([2,2])
执行后的输出如下:
a = 0.6734 0.4422 0.4438 0.3153
示例 5
在这个例子中,我们将传递 typename 并查看生成的随机数的输出。
a = rand(3,"single")
执行后的输出如下:
a = 0.124537 0.265118 0.110287 0.395455 0.102573 0.826784 0.062113 0.124306 0.141749
第一个参数是 3,因此它将创建一个 3x3 的单精度 typename 矩阵。
让我们看看另一个例子
a = rand([2,3], "double")
执行后的输出如下:
a = 0.078242 0.617494 0.702426 0.721792 0.878933 0.199488
在上面的例子中,我们传递了一个 [2,3] 向量,它生成一个类型为 double 的 2x3 矩阵。
示例 6
在这个例子中,让我们首先创建一个大小为 2x2 的单精度矩阵。
p = single([3 2; -2 1])
执行后的输出如下:
p = 3 2 -2 1
现在让我们在 rand 函数中使用 p,如下所示
a = rand(size(p),"like",p)
执行后的输出如下:
a = 2×2 single matrix 0.1966 0.6160 0.2511 0.4733
它返回一个大小为 2x2 的随机数矩阵。
示例 7
在这个例子中,让我们首先创建一个流,如下所示:
s = RandStream('dsfmt19937')
现在让我们在 rand 函数中使用流 s,如下所示:
a = rand(s,[3 3])
使用 randn 函数
randn - 此函数与 rand 相同,唯一的区别是它将返回正态分布的随机数。函数的语法如下所述。
语法
a = randn a = randn(n) a = randn(sz1, sz2,.....szn) a = randn(sz) a = randn(_, typename) a = randn(_, “like”, p) a = randn(s,_)
序号 | 语法和描述 |
---|---|
1 | a = randn 这将从标准正态分布返回一个随机标量数。 |
2 | a = rand(n) 这将返回一个来自标准正态分布的 nxn 矩阵。 |
3 | a = rand(sz1, sz2,.....szn) 这将返回一个大小为 sz1 x szn 的随机数数组。 例如,rand(2,3) 返回一个大小为 2x3 的矩阵。因此,随机数数组的大小将为 2x3。 |
4 | a = rand(sz) 这里的向量大小为 sz。该函数将返回一个大小为 sz 的随机数数组。例如,rand([2,3]) 将返回一个大小为 2x3 的数组。 |
5 | a = rand(_, typename) 此处返回的随机数数组的类型为 typename。例如,“single”、“double”。 |
6 | a = rand(_, “like”, p) 这将为您提供一个与 p 具有相同数据类型或复杂性(实数或复数)的随机数数组。您可以使用 typename 或“like”,但不能同时使用两者。 |
7 | a = rand(s, _) 随机数是从流 s 中创建的。您可以使用 RandStream 创建一个流。 |
让我们看看上面讨论的每种语法的示例。
示例 1
a = randn
执行后的输出如下:
a = -0.1226
在这个例子中,我们只是调用 randn 函数。该值存储在变量 a 中。
给定的值为 0.5377,该值是从标准正态分布生成的,即它的均值为 0,标准差为 1。
示例 2
在这个例子中,我将尝试使用 n 值调用 randn。
a = randn(2)
执行后的输出如下:
a = 0.1708 -0.9527 1.8627 2.8103
我们传递给 randn 的数字是 2。因此,它返回一个大小为 2x2 的矩阵,其中包含如上所示的随机数。
示例 3
在这个例子中,我们将 nxn 矩阵传递给 rand 函数。
a = randn(3,3)
执行后的输出如下:
a = 0.067762 0.519480 -0.568026 0.267630 0.232140 -1.267290 0.808611 1.462018 1.039429
生成的矩阵大小为 3x3。
示例 4
在这个例子中,我们将使用大小为 [3,4] 的向量数组在 randn 函数中,如下所示
a = randn([3,4])
执行后的输出如下:
a = -0.2043 -0.4831 -0.4446 0.4228 0.2926 2.2891 1.5870 0.3228 0.4624 -1.0989 1.2035 -0.4612
输出是一个 3x4 矩阵。
示例 5
在这个例子中,我们将传递 typename 并查看生成的随机数的输出。
a = randn(3,"single")
执行后的输出如下:
a = 1.6072 -0.4121 0.2886 0.7244 1.3422 0.9589 0.9034 0.6775 -0.5273
第一个参数是 3,因此它将创建一个 3x3 的单精度 typename 矩阵。
示例 6
在这个例子中,让我们首先创建一个大小为 2x2 的单精度矩阵。
p = single([3 2; -2 1])
执行后的输出如下:
p = 3 2 -2 1
现在让我们在 rand 函数中使用 p,如下所示
a = randn(size(p),"like",p)
它返回一个大小为 2x2 的随机数矩阵。
示例 7
在这个例子中,让我们首先创建一个流,如下所示:
s = RandStream('dsfmt19937')
现在让我们在 randn 函数中使用流 s,如下所示
a = randn(s,[3 3])
使用 randi 函数
randi - 处理均匀分布的伪随机整数。
语法
a = randi(imax) a = randi(imax,n) a = randi(imax,sz1,...,szN) a = randi(imax,sz) a = randi(___,typename) a = randi(___,"like",p) a = randi([imin,imax],___) a = randi(s,___)
序号 | 语法和描述 |
---|---|
1 | a = randi(imax) 这将返回一个介于 0 到 imax 之间的伪随机标量整数。 |
2 | a = randi(imax,n) 这将返回一个 nxn 矩阵,其中包含介于 [1, imax] 之间的整数。 |
3 | a = randi(imax,sz1,...,szN) 这将返回一个大小为 sz1 x szn 的随机整数数组。 例如,randi(10, 2,3) 返回一个大小为 2x3 的矩阵,其中包含介于 1 到 10 之间的伪随机整数。 |
4 | a = randi(imax,sz) 这里的向量大小为 sz。该函数将返回一个大小为 sz 的随机整数数组。例如,randi(10, [2,3]) 将返回一个大小为 2x3 的数组,其中包含介于 1 到 10 之间的随机整数。 |
5 | a = randi(_, typename) 介于 1 到 imax 之间的随机整数数组,类型为 typename。例如,“single”、“double”、“int8”、“uint8”、“int16”、“uint16”、“int32”、“uint32”或“logical”。 |
6 | a = rand(_, “like”, p) 这将为您提供一个伪随机整数数组,类似于 p 或复杂度(实数或复数)类似于 p。您可以使用 typename 或“like”,但不能同时使用两者。 |
7 | a = randi([imin,imax],___) 这将返回一个伪随机整数数组,该数组位于 imin 和 imax 指定的区间内。 |
8 | a = rand(s, _) 随机数由流s创建。您可以使用 RandStream 创建流。 |
示例 1
在这个例子中,让我们看看 a = randi(imax) 的输出。
a = randi(6)
执行后的输出如下:
a = 2
示例 2
在这个例子中,我们将看到 a = randi(imax,n) 的输出。
a = randi(5,3)
执行后的输出如下:
a = 5 1 5 1 4 1 5 2 5
示例 3
让我们检查 a = randi(imax,sz1,...,szN) 的输出。
这里 imax 将使用 8,矩阵大小将为 2,3。
a = randi(8,2,3)
执行后的输出如下:
a = 7 4 2 2 4 5
示例 4
让我们检查 a = randi(imax,sz) 的输出。
这里 imax 将使用 8,矩阵大小将为 [2,3]。
a = randi(8,[2,3])
执行后的输出如下:
a = 6 7 5 2 7 3
示例 5
在这个例子中,我们将传递 typename 并查看生成的随机整数的输出。
a = randi(5, "int32")
执行后的输出如下:
a = 3
示例 6
在这个例子中,我们将传递 typename 并查看生成的随机整数的输出。
a = randi(10,size(p),"like",p)
示例 7
在这个例子中,让我们检查 imin 和 imax 区间内的伪随机整数。
r = randi([1,5],3,3)
执行后的输出如下:
r = 3 2 3 4 1 1 1 4 1
imin 为 1,imax 为 5。大小为 3x3 的矩阵是从区间 [1,5] 生成的。
示例 8
在这个例子中,让我们首先创建一个流,如下所示:
s = RandStream('dsfmt19937')
如下所示,流在 randi 函数中使用。
a = randi(s,[1,10],[2 3])
使用 randperm 函数
randperm − 随机数通过整数的随机排列生成。
语法
a = randperm(n) a = randperm(n,k) a = randperm(s,___)
序号 | 语法和描述 |
---|---|
1 | a = randperm(n) 这将返回一个行向量,该向量包含 1 到 n 的排列整数,并且不会重复任何值。 |
2 | a = randperm(n,k) 这将返回一个行向量,该向量包含从 1 到 n 的排列中随机选择的 k 个唯一整数。 |
3 | a = randperm(s,___) 随机排列生成基于随机数流 s 的整数。 |
示例 1
在这个例子中,我们将查看使用 a = randperm(n) 生成的输出。我们将使用 n 为 10。因此排列将从 1 到 10 进行。
a = randperm(10)
执行后的输出如下:
a = 8 7 5 4 10 6 2 1 3 9
示例 2
让我们检查从函数 a = randperm(n,k) 返回的 k 个唯一整数的行向量。其中 k = 5,n = 10。
a = randperm(10,5)
执行后的输出如下:
a = 1 2 10 5 4
示例 3
在这个例子中,让我们使用流进行排列。
s = RandStream('dsfmt19937')
现在让我们在 a = randperm(s,___) 中使用流。
a = randperm(s,6)