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:

  1. Generate having density .
  2. Generate a random number .
  3. 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:

  1. Generate random numbers .
  2. If

accept and set ; otherwise repeat.

2.5 Example: Generate Standard Normal Random Variables

要求生成标准正态随机数 .

先考虑 的分布:

Let be the density of :

The optimal is:

Thus:

Algorithm:

  1. Generate , an exponential random variable with rate .
  2. Generate a random number .
  3. If , set . Otherwise, return to Step 1.

在生成了绝对值正态分布后, 我们可以令 以相等的概率等于 或 , 即有标准正态函数的分布.

Improvement: 对上述不等式左右取对数, 有:

根据计算又知 服从 分布, 故算法可改进为:

  1. Generate , an exponential random variable with rate .
  2. Generate , an exponential random variable with rate .
  3. If , set and go to Step 4. Otherwise, go to Step 1.
  4. Generate a random number and set:

通过生成标准正态 , 其余正态函数可以通过 生成.