「シミュレーション」カテゴリ内の記事 このカテゴリをはてなブックマークに追加 このカテゴリを含むはてなブックマーク (初公開日順)

2016年8月27日 (土)

モンティ・ホール問題または三囚人問題の拡張とその確率操作シミュレーション

はじめに


近年、J. ローゼンハウスの『モンティ・ホール問題テレビ番組から生まれた史上最も議論を呼んだ確率問題の紹介と解説』という本が出た。この本は、モンティ・ホール問題について詳しく、この本が出る前に私が考えていた問題の拡張についても書かれてしまっていた。この本を読んで、一端は、私がこれ以上、この問題について何か書く必要はないかと思った。が、それからしばらくして、私がやったことも少しは意味があるかと思い直し、私の思考の跡を備忘的に記録するため、ちょっとした確率モデルのシミュレーションに関する論考を足して、レポートにしておくことにした。

続きを読む "モンティ・ホール問題または三囚人問題の拡張とその確率操作シミュレーション"

2016-08-27 21:17:40 (JST) in Perl, シミュレーション | | コメント (1) | トラックバック (0)

2011年11月18日 (金)

タロットの偶奇で易の卦を出す

トランプやタロットといったカードで易の卦を出すとき、一度出たカードは次には出なくなることから、カードの数のパリティー(奇数か偶数か)で卦を診ようとすると微妙に結果が偏ることになる。

本稿では、易の卦を出す簡単な方法がすでにいろいろある中、あえて複雑な操作を用い、この結果の偏りを減らす方法を考案する。

続きを読む "タロットの偶奇で易の卦を出す"

2011-11-18 22:57:26 (JST) in シミュレーション | | コメント (1) | トラックバック (1)

2011年7月 1日 (金)

Exhaustive Lock Dependency Emulator その2 wait_and_lock

その1で、このフレームワークにおいて「入力待ち…は…特殊な枝刈りの仕方」ではないかというアイデアを書いた。本稿では、それを実装してみる。

理屈


入力待ちは、最も単純にはループして、他のプロセスが $context を変更するのを待てば良い。しかし、それは普通、非効率的で、このエミュレータだと、探索すべき lock 仕様の木の深さを無限に大きくすることになる。

もう少しマシな方法ということであれば、unlock したあと、次に他のプロセスが lock/unlock するのを待ってから lock する「wait_and_lock」と呼ぶべき機構を考えることができる。この方法を先のフレームワークで実現するには、 lock 仕様を見て、間に他の lock がなければ、それを枝刈りするだけで良い。とても簡易で、枝を伸ばすのではなく枝を刈るのだから効率的ですらある。

続きを読む "Exhaustive Lock Dependency Emulator その2 wait_and_lock"

2011-07-01 22:37:18 (JST) in Perl, シミュレーション, 関数型言語・定理証明器 | | コメント (1) | トラックバック (0)

2011年6月20日 (月)

Exhaustive Lock Dependency Emulator その1 並列処理の総当り

マルチスレッドまたはマルチプロセスの最も簡易な lock/unlock 機構において、その依存を総当たり的に調べるプログラムを(Perlで)書いた。

総当たり的なので、特に工夫があるといえるわけではなく、おそらく他の方が特に言及することなく為していることについて、たまたま私もプログラムする順番が回ってきたぐらいのことになると思う。「車輪の再発明」だが、調べるよりは自分で作ったほうが早い部類の話で、記号論理をやった人間にとって示唆に富む部分があるという印象を受けたので、ブログに書いておくことにした…といったところ。

これはマルチプロセス環境を Perl 上でエミュレートするという話ではまったくない。プログラム自体は、シングルプロセスで終了する形をとる。

アイデアのキモは、シングルプロセス環境ではあるがプロセスを順に何度も起動し、unlock があったときに環境をすべて保存し、lock があったときに以前 unlock された環境に切り換わると考えることにより、lock/unlock のシミュレーションができたと考える点にある。

続きを読む "Exhaustive Lock Dependency Emulator その1 並列処理の総当り"

2011-06-20 02:54:31 (JST) in Perl, シミュレーション, 関数型言語・定理証明器 | | コメント (2) | トラックバック (3)