トップページ⇒tech
28コメント6KB

課題

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/04/18(土) 23:42:30
1から19までの整数の中から一つを選び出し記録する
これを50回繰り返す
記録の中に1から19までのすべての整数が表れている確率を求めよ



ただし、選び出しはそれぞれ等確率で試行は毎回独立

ヒント:モンテカルロ法
0002デフォルトの名無しさん2009/04/19(日) 02:41:00
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                         霊長類研究所
0003デフォルトの名無しさん2009/04/19(日) 06:30:37
これってこれから話題広がるような要素持っているのか?
0004デフォルトの名無しさん2009/04/19(日) 16:32:28
そもそも代数的に解けるんだけど、
あえてモンテカルロ法を使え、という課題?
0005デフォルトの名無しさん2009/04/19(日) 20:07:40
糞スレ立てる霊長類研究所をアク禁にしよう
0006デフォルトの名無しさん2009/04/20(月) 00:09:49
じゃあ、代数的に解いてみ
0007デフォルトの名無しさん2009/04/20(月) 00:24:25
モンテカルロ法を使うのはいいが、どの程度の精度を期待しているのかが問題だ。
0008デフォルトの名無しさん2009/04/20(月) 00:59:37
50回って書いてあるやん。
0009デフォルトの名無しさん2009/04/20(月) 01:14:32
えっ?
0010デフォルトの名無しさん2009/04/20(月) 07:37:26
>>6
ごめん、あまりよく考えずに代数的って言ってしまった。

mCn を組合せの記号として、
Gm,1 = 1
Gm,n = Σ[k = 1 to m-n+1] (mCk Gm-k,n-1)

確率 = G19,50 / 50^19

じゃ代数的とは言わないんだっけ?
0011デフォルトの名無しさん2009/04/20(月) 11:37:41
>>8
うわあ・・・
0012102009/04/20(月) 12:35:03
すまん、分母は 19^50 だった
0013デフォルトの名無しさん2009/04/20(月) 21:15:11
プログラム書いて5000回の試行でやってみたけど
だいたい0.23くらいだった。

計算で解くにはどうすればいいの?
0014102009/04/20(月) 21:31:23
>計算で解くにはどうすればいいの?

計算をそのままプログラムに書いて実行させたんだが。

0.230899 になった。
0015デフォルトの名無しさん2009/04/21(火) 20:48:08
10億回やって0.230901になった
微妙な精度だ…
0016デフォルトの名無しさん2009/04/22(水) 01:06:34
同じくC#で10億回やってみたけどSystem.Randomが今一なのか。
P = 0.230973339076107
elapsed: 00:11:21.5321334
0017デフォルトの名無しさん2009/04/22(水) 03:29:13
ううむ
平均は出した
だが、不確かさを計算してなかった
出来る人いる?

それが>>14と比べて妥当なら問題ないんだが・・・
0018デフォルトの名無しさん2009/04/25(土) 20:45:08
全パターン書いて数えたら早くね?
0019デフォルトの名無しさん2009/04/25(土) 22:05:04
>>18
で、数えたら何パターンあったんだ?
0020デフォルトの名無しさん2009/04/26(日) 00:06:09
数えたらおおよそだけど0.2不可思議パターンくらいあった気がするよ…
0021デフォルトの名無しさん2009/04/26(日) 00:45:47
0.8不可思議じゃね?
0022102009/04/26(日) 01:02:47
試しに分子を出力してみたら >>20 のとおり約 0.2 不可思議だった。
200 / 866 でも意外にいい精度だ。

というか、不可思議という単位を生まれて初めて実用的に使ったな。

0023デフォルトの名無しさん2009/04/26(日) 11:47:25
0.2不可思議 / 0.866不可思議すか
0024102009/04/26(日) 12:15:47
そう。
正確にはこうです。

分子 = 2000331258910621674822638417088068579958042884531264200704000000
分母 = 8663234049605954426644038200675212212900743262211018069459689001

私の計算式と、そのプログラムが正しければだが・・・
0025デフォルトの名無しさん2009/04/26(日) 14:08:37
すごい数だな。

いま神戸に作ってる10PFLOPSのスパコンが1FLOPで一つの組み合わせを検証できたとしても
三百万京ミレニアムほどかかるな。
0026102009/04/26(日) 14:30:23
>>14 で 0.230899 になったって言ったけど、
よく考えてみたら表示のために文字列化する関数で丸められてた。

丸めずに表示させたら 0.23089890535759 だった。
0027デフォルトの名無しさん2009/04/26(日) 14:49:06
最大公約数6859ですね。これには何か意味があるのかな。
0028102009/04/26(日) 14:50:50
なんかもう自分、間違いだらけだ。
整理してもう一度書きます。

mCn を組合せの記号として、
Gm,1 = 1
Gm,n = Σ[k = 1 to m-n+1] (mCk Gm-k,n-1)
確率 = G50,19 / 19^50 = 0.230898905357591

計算に使用したプログラムは F# なので、
多倍長整数ライブラリなども現在の F# のものです。


間違いに誰も突っ込まないのは、ほとんど誰も感心がないという事か・・・
懺悔がてら暫く逝ってくる
■ このスレッドは過去ログ倉庫に格納されています