### 多维随机数的生成方法
#### 一、一维随机数生成方法
##### 1.1 常见随机数的生成
利用MATLAB的`Statistic Toolbox`可以生成符合常见分布规律的随机数,例如正态分布、均匀分布等。这些功能较为常见,在这里我们将略过具体的实现细节。
##### 1.2 特殊分布随机数的生成
对于MATLAB中没有内置函数支持的特殊分布,我们可以采用以下方法进行生成:
**(1)特殊离散分布**
生成特殊离散分布的随机数主要通过以下几个步骤完成:
- **Step1:** 计算累积概率分段函数。
- **Step2:** 生成一个(0,1)区间内的均匀分布随机数。
- **Step3:** 根据生成的随机数落在累积概率函数的哪个区间内,决定生成的具体随机数。
**关键点:** 获取离散分布的分布律。
假设有一个离散分布,其中随机变量取值为\( A_1, A_2, \ldots, A_n \),对应的概率分别为\( P_1, P_2, \ldots, P_n \)。则可以通过以下步骤生成随机数:
1. **计算累积概率函数**:
\[
F(x) = \begin{cases}
P_1 & \text{if } x < A_2 \\
P_1 + P_2 & \text{if } A_2 \leq x < A_3 \\
\vdots \\
P_1 + P_2 + \cdots + P_n & \text{if } A_n \leq x
\end{cases}
\]
2. **生成(0,1)间的均匀分布随机数** \( x_0 \)。
3. **根据\( x_0 \)落在累积概率函数的哪个区间来决定生成的具体随机数** \( A_i \)。
通过上述步骤,可以保证生成的随机数服从给定的离散概率分布。
**(2)特殊连续分布**
**Method 1:逆CDF函数法**
若已知某特定一维分布的累积分布函数(CDF) \( F(x) \),可以通过以下步骤生成符合该分布的随机数:
- **Step1:** 计算CDF的反函数 \( F^{-1}(x) \)。
- **Step2:** 生成服从(0,1)区间上均匀分布的随机数 \( a \)。
- **Step3:** 令 \( x = F^{-1}(a) \),则 \( x \) 即服从所需的特定分布。
**注意:**
- CDF函数的反函数可能存在定义问题,如在0或1处的值可能是正负无穷。
- CDF函数必须严格单调递增,即PDF在定义域内处处大于0。
- 若CDF函数过于复杂,可能导致计算速度慢或无法计算。
**Method 2:接受/拒绝法 (Acceptance-Rejection Method)**
该方法的核心思想是通过“形似”的方式生成随机数,具体步骤如下:
1. **选择一个分布的PDF \( g(x) \) 并计算常数 \( c \)**,确保 \( f(x) \leq cg(x) \) 对所有 \( x \) 成立。
2. **生成服从 \( g(x) \) 分布的随机数 \( x_0 \)。**
3. **再生成一个(0,1)区间的均匀分布随机数 \( y \)。**
4. **如果 \( \frac{f(x_0)}{cg(x_0)} \geq y \),则丢弃 \( x_0 \);反之,则保留。**
这种方法无需计算CDF的反函数,但无法准确预知最终得到的随机数数量,并且选择合适的 \( g(x) \) 是关键。
#### 二、高维随机数的生成方法
**(一)各维度独立**
当各维度之间相互独立时,可以单独生成每个维度上的随机数,然后组合成随机数向量。这种情况下,生成过程相对简单。
**(二)协方差矩阵生成多元正态分布**
当需要生成服从多元正态分布的随机数时,可以采用以下步骤:
1. **依照边缘分布的均值和标准差生成每个维度上的随机数**,并组合成一个向量。
2. **对相关系数矩阵进行Cholesky分解**。
3. **用分解得到的矩阵乘以第一步中生成的向量**,得到所需随机数。
**(三)由联合分布生成多维分布随机数**
对于更一般的情况,可以通过以下步骤生成随机数:
1. **对联合分布的PDF函数积分**,计算出某个维度的边缘分布。
2. **利用边缘分布生成随机数**。
3. **重复上述过程直到所有维度的随机数都被生成**。
一维随机数的生成方法包括生成常见及特殊分布的随机数,而高维随机数的生成方法则考虑了维度独立、多元正态分布以及由联合分布生成的情况。这些方法不仅适用于理论研究,也为实际应用提供了强大的工具。