乱数発生 その二。

一様乱数などの基礎的な乱数発生器は多くのソフトウェアに組み込みで用意されているので、実は、発生法に困る事は事実上ない。だがしかし、我々が用いたい分布がそのような中にない事は多々ある。そのような場合には、

  • 棄却サンプリング

を用いると効果的なことがある。棄却サンプリングの基本的なアルゴリズムは、

もしもg(x)が\pi(x)>0であるようなすべてのxについて\pi(x) <=cg(x)(ただしcは定数)であるならば、

  1. generate x^* ~ g(x)
  2. generate u ~ U[0,1]
  3. accept x^* if u<= \pi(x^*)/cg(x^*), otherwise return to 1.

として発生させたx^*はtarget \pi(x)に従う。

のようになる。このアルゴリズムにおいてはproposalから乱数発生させ、棄却率を分布の高さの比でコントロールしてやるところがクリティカルである。これを用いると、切断正規分布など通常発生させることが難しいと考えられている分布が容易に発生できる。