カードが一致する確率

 投稿者:GAI  投稿日:2011年 8月 3日(水)22時29分48秒
  2組のトランプをトップからカードを同時に表向きに開けていく時、同じカードが出現することがある確率が1-1/e(約0.63)という記事を読んだことがあった。

しかし、実際にトランプでやってみたら10回に2回位しか起こらず、この数値が実感できませんでした。

そこで、このことをコンピューターで何回も試行して果たして理論通りになるものか確かめて頂きたいのですが、何方かプログラムを提供して下さい。

 

Re: カードが一致する確率

 投稿者:山中和義  投稿日: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
 

Re: カードが一致する確率

 投稿者: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


 

戻る