投稿者:永野護
投稿日: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針が同時に重なることはないのでしょうか。
以上が質問です。よろしくお願いします。
|
|
|
投稿者:白石和夫
投稿日: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
|
|
|
投稿者:永野護
投稿日:2011年 4月10日(日)16時52分53秒
|
|
|
お返事ありがとうございました。
連は順序込みのようです。本の記述が間違っているのでしょうか.........。
|
|
|
投稿者:山中和義
投稿日: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
|
|
|
投稿者:山中和義
投稿日: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回だけ重なる。
|
|
|
投稿者:永野護
投稿日: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
|
|
|
投稿者:山中和義
投稿日: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
で確認すると、乱数の発生が偏り過ぎと思います。
|
|
|
投稿者:永野護
投稿日:2011年 4月12日(火)14時02分47秒
|
|
|
戻る