1. Inverse Transform Algorithm
1.1 Principle
若 为 区间随机数, 则任意连续型随机变量可以通过下式确定:
1.2 Example: Exponential Random Variable
See Generating Exponential Random Variables from Uniforms.
Generate a random variable :
Let
Solving for :
Equivalently:
Code:
lam = 2;
uni = rand(1, n);
X = -log(uni) / lam;2. Rejection Method
2.1 Simulation Goal
通过辅助分布 生成服从较复杂的密度函数 的随机变量.
2.2 Simulation Method
- 首先确定一个辅助的建议分布 , 已知其概率密度函数为 , 用来产生候选样本. 理论上 可服从任意分布, 而在实际计算中通常采取与目标分布 形状较为接近的分布.
- 另生成一个 用于后续比较.
- 计算一个常数 , 使得对于 , 都有 . 为了计算方便, 常常选择满足条件的 中的最小值.
- 若不等式 成立, 则接受 , 令 ; 否则重新生成进行比较.
Algorithm:
- Generate having density .
- Generate a random number .
- If , set . Otherwise, return to Step 1.
2.3 Principle
Let be the target random variable and be the necessary iteration count:
其中 . 令 可知 , 证毕.
Note: Rejection sampling details
- 该方法由 Von Neumann 创造, 其中的 为 区间的均匀分布.
- 由于每次接受的概率为 , 故循环次数服从几何分布, 其平均循环次数为 .
- 在循环中若拒绝, 即 , 此时并不需要重新生成随机数, 而是可以通过下面的公式直接利用先前拒绝的 计算出新的随机数以减少运算量:
2.4 Example: Density
要求生成随机变量 服从:
Let
下求解最优 :
通过求导可知上式的极大值点为 , 极大值为 , 故 .
Therefore:
Simulation:
- Generate random numbers .
- If
accept and set ; otherwise repeat.
2.5 Example: Generate Standard Normal Random Variables
要求生成标准正态随机数 .
先考虑 的分布:
Let be the density of :
The optimal is:
Thus:
Algorithm:
- Generate , an exponential random variable with rate .
- Generate a random number .
- If , set . Otherwise, return to Step 1.
在生成了绝对值正态分布后, 我们可以令 以相等的概率等于 或 , 即有标准正态函数的分布.
Improvement: 对上述不等式左右取对数, 有:
根据计算又知 服从 分布, 故算法可改进为:
- Generate , an exponential random variable with rate .
- Generate , an exponential random variable with rate .
- If , set and go to Step 4. Otherwise, go to Step 1.
- Generate a random number and set:
通过生成标准正态 , 其余正态函数可以通过 生成.