投稿者:GAI
投稿日:2011年 8月 3日(水)22時29分48秒
|
|
|
2組のトランプをトップからカードを同時に表向きに開けていく時、同じカードが出現することがある確率が1-1/e(約0.63)という記事を読んだことがあった。
しかし、実際にトランプでやってみたら10回に2回位しか起こらず、この数値が実感できませんでした。
そこで、このことをコンピューターで何回も試行して果たして理論通りになるものか確かめて頂きたいのですが、何方かプログラムを提供して下さい。
|
|
|
投稿者:山中和義
投稿日:2011年 8月 4日(木)19時08分21秒
|
|
|
> No.1615[元記事へ]
GAIさんへのお返事です。
> 2組のトランプをトップからカードを同時に表向きに開けていく時、同じカードが出現することがある確率が1-1/e(約0.63)という記事を読んだことがあった。
1組のトランプが順番通りに出現することがあるとしました。
RANDOMIZE
LET n=52 !枚数
DIM a(n)
FOR i=1 TO n !数字を準備する
LET a(i)=i
NEXT i
LET iter=50000
LET c=0
FOR i=1 TO iter
CALL shuffle(a,n) !シャッフル
FOR j=1 TO n !j番目が一致
IF a(j)=j THEN EXIT FOR
NEXT j
IF j>n THEN LET c=c+1 !すべて不一致
NEXT i
PRINT 1-c/iter !余事象
LET s=0 !理論値 P(n)=1-1+1/2!-1/3!+1/4!+ … +(-1)^n/n!
FOR i=0 TO n
LET s=s+(-1)^i/FACT(i)
NEXT i
PRINT 1-s
END
EXTERNAL SUB shuffle(a(),n)
FOR i=n TO 2 STEP -1 !シャッフルする
LET p=INT(RND*(i-1))+1 !左側 1~i-1
LET t=a(i) !右端iと交換する
LET a(i)=a(p)
LET a(p)=t
NEXT i
END SUB
|
|
|
投稿者:GAI
投稿日:2011年 8月 5日(金)06時25分27秒
|
|
|
> No.1616[元記事へ]
山中和義さんへのお返事です。
参考サイトの紹介と共にプログラムの提供ありがとうございました。
私も、お恥ずかしいんですが3時間位かけて試行錯誤の上作ってみました。
以下の中でおかしい部分、論理的に間違っている点がありましたらどうか御教授お願いします。
どこでfor文を使ったらいいのか、カウントをどうしたらとれるのか悩みました。
2組のデックの一方はもう並べておけばいいんですね。
気がつかないな~!!
RANDOMIZE
OPTION BASE 1
LET k=0
LET m=0
DIM A(52),B(52)
INPUT PROMPT "何回試行しますか?":p
FOR j=1 TO p
LET n=0
! PRINT j;"回目"
FOR t=1 TO 52
150 LET A(t)=1+INT(100*RND)
155 LET B(t)=1+INT(380*RND)
IF A(t)>52 THEN 150
IF B(t)>52 THEN 155
FOR i=1 TO t-1
IF a(t)=a(i) THEN 150
IF B(t)=B(i) THEN 155
NEXT i
! PRINT t, A(t),B(t)
IF A(t)=B(t) THEN LET n=n+1
NEXT t
IF n>0 THEN LET m=m+1 ELSE LET k=k+1
PRINT "一致する頻度"; n
NEXT j
PRINT "一致した合計回数";m,"一致しない合計回数";k
PRINT "一致する確率=";m/p
END
|
|
|
戻る