乱数生成と情報源符号化

タイトルは,

星 守,乱数生成と情報源符号化,応用数理,Vol. 8,No. 2,pp. 38--52,1998

のものです.
この論文に,次のような例題が載っていました.

表と裏がでる確率が,それぞれp,1-pであるコインを使って,正確に1/2の確率で出現する0,1の2進列を生成したい.すなわち,偏ったコインを使って正しいコインをシミュレートしたい.ただし,pは未知であることに注意.

問題提起も,その基本的な解法も,フォン・ノイマンの1951年の論文だそうです.

表が出る確率pが大きかったら,コインを振った結果は表が多くなるはずで,例えば表表裏表裏表表表表裏表裏表表...みたくなるはずです.この結果から,表と裏の出る確率を同等にすると.


ノイマンによる解答は,次のようなものだそうです.

偏ったコインの出力列が,「表裏」なら0を,「裏表」なら1を出力し,「表表」「裏裏」のときは何も出力しない

なるほどぉ...

表が出る確率がp,裏が出る確率が1-pなら,「表裏」が出る確率はp(1-p)です.「裏表」が出る確率は,(1-p)pです.値としては同じですね.もちろん,「表表」の確率はp^2,「裏裏」は(1-p)^2です.


例で上で出した,「表表裏表裏表表表表裏表裏表表」(←表の方が出る確率が高い)でやってみると...

  1. 最初,「表表」なので無視
  2. 次,「表裏」なので0
  3. 次,「裏表」なので1
  4. 次,「表裏」なので0
  5. 次,「裏表」なので1
  6. 次,「表表」なので無視
  7. 次,「表表」なので無視
  8. 次,「表表」なので無視
  9. 次,「表裏」なので0
  10. 次,「裏表」なので1
  11. 次,「表裏」なので0
  12. 次,「裏表」なので1
  13. 次,「表表」なので無視

出力結果は,

01010101

ちょっと完璧すぎるくらい,0と1の出現確率が1/2になりました.
(サンプリングの仕方や入力の長さによりますから,こんな完璧には実際にはならないでしょう)


面白いですね.純粋数学では幾何学くらいしか関心が無かったのですが,もっとも苦手だった確率統計に凄く興味が沸いてきました.