PENNY ANTE

 投稿者:永野護  投稿日:2011年 4月10日(日)10時58分50秒
  いつもお世話になっています。また質問させてください。
質問1.
ペニー アンティー(PENNY ANTE)というゲームがあります。
(わくわくする数学  ロブ イースタウェイ著 岩谷宏訳 ソフトバンク クリエイティブ P.84)
1枚のコインを連続して投げます。このとき先手のAさんが連を裏裏裏と予想し、後手のBさんが表裏裏と予想すれば、Bさんが勝つ確率は7/8になるそうです。(予想した連がでれば勝ち)
以上のことをシミュレーションで確認するにはどんなプログラムをつくればよろしいでしょうか。
質問2.
私たちが使っている時計は長針、短針、秒針が同時に重なることはない(0時0分0秒を除いて)そうですが、時計の盤面をどのように刻みなおしても、(例えば 1日=16時間、1時間=32分、1分=32秒)3針が同時に重なることはないのでしょうか。
以上が質問です。よろしくお願いします。


 
 

Re: PENNY ANTE

 投稿者:白石和夫  投稿日:2011年 4月10日(日)15時37分48秒
  > No.1516[元記事へ]

> 質問1.
> ペニー アンティー(PENNY ANTE)というゲームがあります。
> (わくわくする数学  ロブ イースタウェイ著 岩谷宏訳 ソフトバンク クリエイティブ P.84)
> 1枚のコインを連続して投げます。このとき先手のAさんが連を裏裏裏と予想し、後手のBさんが表裏裏と予想すれば、Bさんが勝つ確率は7/8になるそうです。(予想した連がでれば勝ち)
> 以上のことをシミュレーションで確認するにはどんなプログラムをつくればよろしいでしょうか。

「連」の意味を順序込みで解釈すると,答えが間違っている気がします。
「連が表裏裏」の意味を順序を無視して表1枚,裏2枚と解釈すればシミュレーションで近い答えが出ます。

100 LET a=0
110 LET b=0
120 FOR trial=1 TO 10000
130    LET s2=INT(RND*2)
140    LET s3=INT(RND*2)
150    DO
160       LET s1=s2
170       LET s2=s3
180       LET s3=INT(RND*2)
190       IF s1+s2+s3=0 THEN
200          LET a=a+1
210          EXIT DO
220       END IF
230       IF s1+s2+s3=1 THEN
240          LET b=b+1
250          EXIT DO
260       END IF
270    loop
280    PRINT a/trial, b/trial
290 NEXT trial
300 END

 

PENNY ANTE

 投稿者:永野護  投稿日:2011年 4月10日(日)16時52分53秒
  お返事ありがとうございました。
連は順序込みのようです。本の記述が間違っているのでしょうか.........。
 

Re: PENNY ANTE

 投稿者:山中和義  投稿日:2011年 4月11日(月)10時56分19秒
  > No.1518[元記事へ]

永野護さんへのお返事です。

勝敗が決まらず連が長くなる場合、その部分を収束させる(A,Bのどちらになるか判定する)ために
試行回数を増やさざるを得ないようです。

先手が1/8、後手が7/8、7手目で勝負ありとなりました。

90 !!RANDOMIZE !←←← ※必要に応じて
100 LET a=0 !先手の勝ち数
110 LET b=0 !後手
115 LET c=0 !勝敗が決まる手数
120 FOR trial=1 TO 30000 !試行回数←←←←←
130    LET s2=INT(RND*2) !1手目
140    LET s3=INT(RND*2) !2手目
145    LET c=c+2
150    DO !3手目以降
160       LET s1=s2
170       LET s2=s3
180       LET s3=INT(RND*2)
185       LET c=c+1
190       IF s1+s2+s3=0 THEN !先手の判定
200          LET a=a+1
210          EXIT DO
220       END IF
230       IF s1=1 AND s2+s3=0 THEN !後手の判定←←←←←
240          LET b=b+1
250          EXIT DO
260       END IF
270    LOOP
280    !!!PRINT a/trial, b/trial !←←←
290 NEXT trial
295 PRINT a/trial; b/trial; c/trial !←←←
300 END
 

Re: PENNY ANTE

 投稿者:山中和義  投稿日:2011年 4月11日(月)12時17分10秒
  > No.1516[元記事へ]

永野護さんへのお返事です。

> 質問2.

最初に12時に重なっているのを除いて、12時間後に重なるときを勘定に入れると
12時間(= H)で
長針と短針が重なるのは、11回(= (H-1)回 )
長針と秒針が重なるのは、1時間(= M分 )で59回(= (M-1)回 )なので、59*12=708回(= (M-1)*H回 )
3針が重なる回数は、この2つの数の最大公約数となる。
通常の時計の場合は1となるので、
最初の12時に重なっているのを除いて、最後の12時に重なっている1回だけ重なる。
 

PENNY ANTE

 投稿者:永野護  投稿日:2011年 4月12日(火)10時15分8秒
  PENNY  ANTE のプログラムで下記のように125行目と155行目にRANDOMIZEをいれ,90行目の!!をはずしてから実行すると答えが正解からずれてしまうのはなぜでしょうか。
同様なことをEXCEL VBAで試してみましたがこちらの場合は正解がでているみたいなのですが。125行目と155行目どちらもだめなのでしょうか。それともどちらか1つだけならかまわないのでしょうか。ご教示いただければ幸いです。
90 RANDOMIZE !←←← ※必要に応じて
100 LET a=0 !先手の勝ち数
110 LET b=0 !後手
115 LET c=0 !勝敗が決まる手数
120 FOR trial=1 TO 30000 !試行回数←←←←←
125   RANDOMIZE
130    LET s2=INT(RND*2) !1手目
140    LET s3=INT(RND*2) !2手目
145    LET c=c+2
150    DO !3手目以降
155  RANDOMIZE
160       LET s1=s2
170       LET s2=s3
180       LET s3=INT(RND*2)
185       LET c=c+1
190       IF s1+s2+s3=0 THEN !先手の判定
200          LET a=a+1
210          EXIT DO
220       END IF
230       IF s1=1 AND s2+s3=0 THEN !後手の判定←←←←←
240          LET b=b+1
250          EXIT DO
260       END IF
270    LOOP
280    !!!PRINT a/trial, b/trial !←←←
290 NEXT trial
295 PRINT a/trial; b/trial
300 END
 

Re: PENNY ANTE

 投稿者:山中和義  投稿日:2011年 4月12日(火)13時40分22秒
  > No.1522[元記事へ]

永野護さんへのお返事です。

> それともどちらか1つだけならかまわないのでしょうか。

RANDOMIZE文は、乱数表の選択する。
RND関数は、その乱数表の左上から順に数を得る。
という意味です。
したがって、プログラムの先頭に1つRANDOMIZE文を記述するというのが通常です。
途中で乱数表を替えると、微妙に発生率が変わると思います。

しかし、簡易例として

100 !!!RANDOMIZE !←←←←←
110 DIM d(6)
120 LET  N=10000
130 PRINT N/6 !予想
140 FOR i=1 TO N !さいころの目
150    RANDOMIZE !←←←←←
160    LET v=INT(RND*6)+1
170    LET d(v)=d(v)+1
180 NEXT i
190 FOR i=1 TO 6 !回数を表示する
200    PRINT i; d(i)
210 NEXT i
220 END

で確認すると、乱数の発生が偏り過ぎと思います。
 

PENNY ANTE

 投稿者:永野護  投稿日:2011年 4月12日(火)14時02分47秒
  ご教示に感謝します。
お手数をおかけしました。
 

戻る