MATLAB随机数用于模拟实验、随机采样、蒙特卡洛等方法。常用的是 rand、randn、randi,需要结果可复现时再用 rng 固定种子。
三个常用函数
| 函数 | 分布 | 取值范围 |
|---|---|---|
rand | 均匀分布 | [0, 1) 之间的小数 |
randn | 标准正态分布 | 均值 0、标准差 1 |
randi | 均匀分布整数 | 你指定的整数范围 |
rand:均匀分布小数
rand % 一个 0~1 之间的数
rand(3) % 3x3 矩阵
rand(2, 4) % 2x4 矩阵要生成 [a, b] 之间的数,用平移缩放 a + (b-a)*rand:
% 生成 0~10 之间的 3 个随机数
10 * rand(1, 3)randn:正态分布
均值 μ、标准差 σ 的正态分布写成 mu + sigma*randn:
randn % 一个标准正态数
randn(100, 1) % 100 个
mu = 5; sigma = 2;
data = mu + sigma * randn(1, 1000); % 均值 5、标准差 2randi:随机整数
randi(6) % 1~6,掷骰子
randi(10, 2, 3) % 2x3 的 1~10 整数
randi([5, 10], 4) % 4x4 的 5~10 整数randperm:随机排列
把 1 到 n 打乱成不重复的排列,抽签、洗牌常用它:
randperm(10) % 1~10 的一个随机排列
randperm(10, 3) % 从 1~10 里随机抽 3 个不重复的数可复现:rng 设置随机种子
这里的随机是伪随机。同一个种子会生成同一串数,调试和复现实验时用 rng 固定:
rng(42) % 固定种子
a = rand(1, 5) % 这次和下次运行结果一样
rng('shuffle') % 每次运行换新的种子常见误区
- 忘记用
rng:报告或论文里的实验往往需要固定种子才能复现。 - 以为
rand能取到 1:它是 [0, 1) 左闭右开,不会正好等于 1。 - 混淆
rand和randn:一个是均匀分布,一个是正态分布。