トランプゲームの創作

 投稿者:GAI  投稿日:2014年 9月22日(月)10時19分35秒
  トランプ52枚をよくシャッフルして
4枚テーブルへ並べる。
この4枚の数字の合計をして、その合計が素数ならそこで終了。
素数でないならさらに4枚を並べていく。
このように続けて行ったとき、全てのトランプが無くなってしまう確率はどれ位か?
(4枚ずつの13組が全てそれぞれの和が合成数)
論理的にこの確率は求まるものでしょうか。
しばらく挑戦していたんですが場合の処理が多岐に膨らんでいったので諦めてモンテカルロ法的に、プログラムでこの試行を100万回やってみたら24503回が完成できました。
従って統計的確率は0.024503・・・ 位だとは思われますがこの数値が妥当であるかを確認して頂きませんか?


また、4枚並べたときに素数でないとき5枚目を並べることに挑戦でき、それでも5枚の合計が素数でないなら
6枚目も挑戦できる(以下何枚でも)とルールを変更すれば、既に場に出たカードの種類が判明しているので
次のカードを出すか、出さないかをある程度確率的に戦略を取れそう。
(次のカードを出すときそれで素数になる確率が0.5以上ならばカードを出すことをしない。従って新たに4枚まとめてテーブルに出すことになる。これを戦略にする。)
このルールで全てのカードが無くなる確率はいかほどになるのか?
(この経過を上手くプログラムにする力量がないのでよろしくお願いします。)

確率に頼ってやれば、素数かどうかの判定回数が増えるし、また頼らないとすると判定回数は少ないが、4枚が素数になることの割合が高くなるという微妙な関係になる。
また一枚を加える確率の判定基準を1/2以外にするときそれはどんな確率規準が最も適切になるのかなどいろいろ知りたい所です。
 

Re: トランプゲームの創作

 投稿者:しばっち  投稿日:2014年 9月24日(水)21時05分34秒
  > No.3506[元記事へ]

GAIさんへのお返事です。

> 従って統計的確率は0.024503・・・ 位だとは思われますがこの数値が妥当であるかを確認して頂きませんか?
とりあえず作ってみました。
下記のプログラムでもこれに近い値が出ました。

DIM CARD(52)
RANDOMIZE
LET M=10000 !'試行回数
FOR K=1 TO M
   FOR I=1 TO 52
      LET CARD(I)=MOD(I-1,13)+1 !'トランプ52枚
   NEXT I
   FOR I=1 TO 52
      LET J=INT(RND*52)+1
      SWAP CARD(I),CARD(J) !'カードシャッフル
   NEXT I
   LET FL=0 !'フラグをリセット
   FOR J=1 TO 52 !'上からカードを引いていく
      LET S=S+CARD(J)
      IF MOD(J,4)=0 THEN !'4枚目なら
         IF ISPRIME(S)=1 THEN '!素数ならループを抜ける
            LET FL=1 !'フラグセット
            EXIT FOR
         END IF
         LET S=0
      END IF
   NEXT J
   IF FL=0 THEN LET COUNT=COUNT+1 !'カウントする
NEXT K
PRINT COUNT;COUNT/M
END

EXTERNAL  FUNCTION ISPRIME(X) !'素数か
FOR I=2 TO SQR(X)
   IF MOD(X,I)=0 THEN
      LET ISPRIME=0
      EXIT FUNCTION
   END IF
NEXT I
LET ISPRIME=1
END FUNCTION

> また、4枚並べたときに素数でないとき5枚目を並べることに挑戦でき、それでも5枚の合計が素数でないなら
> 6枚目も挑戦できる(以下何枚でも)とルールを変更すれば、既に場に出たカードの種類が判明しているので
> 次のカードを出すか、出さないかをある程度確率的に戦略を取れそう。
> (次のカードを出すときそれで素数になる確率が0.5以上ならばカードを出すことをしない。従って新たに4枚まとめてテーブルに出すことになる。これを戦略にする。)

下記のプログラムでいいのかあまり自信がありません。(細かいところの解釈についても)
まず、「素数になる確率が0.5以上」この部分の求め方についてですが
残りのカードを種類ごとにカウントし、例えば現在のカード合計Sが30だとすると
次の素数は1~13の範囲で31,37,41,43まで、つまり1,7,11,13のカードの枚数の合計SSと
残りのカード枚数から求めています。これでいいのかは分かりません。

> このルールで全てのカードが無くなる確率はいかほどになるのか?

プログラムの結果として、並べるカードの枚数が増えるとそれだけ素数になる確率も増えるということでしょうか。

DIM CARD(52),A(13),V(52)
RANDOMIZE
LET M=10000 !'試行回数
FOR K=1 TO M
   FOR I=1 TO 52
      LET CARD(I)=MOD(I-1,13)+1 !'トランプ52枚
   NEXT I
   FOR I=1 TO 52
      LET J=INT(RND*52)+1
      SWAP CARD(I),CARD(J) !'カードシャッフル
   NEXT I
   LET S=0
   LET NUM=0
   LET FL=0 !'フラグリセット
   FOR J=1 TO 52 !'上からカードを引いていく
      LET S=S+CARD(J)
      LET NUM=NUM+1
      IF NUM=4 THEN !'4枚引いたら
         IF ISPRIME(S)=1 THEN
            LET FL=1
            LET V(NUM)=V(NUM)+1
            EXIT FOR
         END IF
      END IF
      IF NUM>=4 THEN !'5枚目以降を引く前に
         MAT A=ZER
         FOR L=J+1 TO 52
            LET A(CARD(L))=A(CARD(L))+1 !'残りのカードを種類ごとにカウント
         NEXT L
         LET SS=0
         FOR L=1 TO 13
            IF ISPRIME(S+L)=1 THEN !'次に素数となる数L
               LET SS=SS+A(L) !'その数Lのカードの合計枚数
            END IF
         NEXT L
         IF J<52 AND SS/(52-J)>=.5 THEN !'50%以上なら「戦略」を発動。カードは出さない
         !' PRINT "戦略";K
            LET NUM=0
            LET P=P+1 !'戦略発動回数
            LET S=0
         ELSE
            IF ISPRIME(S)=1 THEN !'素数ならループを抜ける
               LET FL=1 !'フラグセット
               LET V(NUM)=V(NUM)+1 !'その時のカードの枚数
               EXIT FOR
            END IF
         END IF
      END IF
   NEXT J
   IF FL=0 THEN LET COUNT=COUNT+1 !'カウントする
NEXT K
PRINT COUNT;COUNT/M
PRINT P
FOR I=1 TO 52
   IF V(I)>0 THEN PRINT I;":";V(I)
NEXT I
END

EXTERNAL  FUNCTION ISPRIME(X) !'素数か
FOR I=2 TO SQR(X)
   IF MOD(X,I)=0 THEN
      LET ISPRIME=0
      EXIT FUNCTION
   END IF
NEXT I
LET ISPRIME=1
END FUNCTION
 

Re: トランプゲームの創作

 投稿者:GAI  投稿日:2014年 9月25日(木)12時20分21秒
  > No.3510[元記事へ]

しばっちさんへのお返事です。


プログラムの提供ありがとうございます。
このプログラムのお陰で、数百万回の試行を一瞬のうちに追跡することが可能になります。
「戦略」を行使するかの判断に使う確率の数値をいろいろ変化させながら調査しました。

> IF J<52 AND SS/(52-J)>=.5 THEN !'50%以上なら「戦略」を発動。カードは出さない
            ↑ の数字を変える

100000回の試行での調査
[確率] :   [達成回数確率]
0.5  :   0.00005
0.4    :   0.00012
0.3    :   0.00279
0.2    :   0.02765
0.1    :   0.02875
0.05   :      0.02805


そこで確率0.1~0.2あたりをもっと追跡すると
300000回の試行での調査
[確率] :   [達成回数確率]
0.17  :   0.02912
0.16   :   0.02894
0.15   :   0.02912
0.14   :   0.02945
0.13   :   0.02948
0.12   :      0.02812


このことは、次のカードで和が素数になる確率が高くなるとそれだけ4枚ずつカードを出す回数が増えていくので、
偶然に左右され、それぞれでの素数判定のチェックに引っ掛かる可能性が高くなる。
また、確率に余り頼らないとすると、1枚ずつカードを安全に引いて行けるが、逆にそれぞれでの素数判定の回数が増えるので素数になるカードを引いてしまう割合が高くなりやはり最後まで到達しずらくなる。

この2つの微妙なバランスで最適な戦略が存在する。


上記の調査により戦略を行使する基準は次のカードで和が素数になる確率が1割3分~1割4分以上であればカードを一枚追加してオープンすることを避け、新たに4枚のカードを開いて再スタートをしていくことにより、先の機械的に4枚ずつでの達成確率
0.024503・・・
を上回れる
0.029以上の確率で全部のカードを処理することができる。


しかし、思った以上に確率を上げることは難しいんですね。
やはり運は天にまかせるしかないか!

 
 

戻る