- ベストアンサー
プログラム(BASIC) 教えてください
(1)サイコロを n 回投げたとき,3の倍数(3または6)が ちょうど r 回 出る確率を求めるプログラム (2) サイコロを n 回投げたとき,3の倍数(3または6)が r 回以下 しか出ない確率を求めるプログラム を教えてください。 解説があるとありがたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1ですが、まあフローチャートくらいは書いてあげましょう。 前教えてあげた、ランダムの話は覚えていますか? 今回乱数は使わないです。確率はnとrだけで決まるから。 FOR~NEXT は使えるようになりましたか? まず数学の確率がわからないとつらいので、確率は次のようになります。 (1) nCr・(2/6)^r・(4/6)^(n-r) ちょうどr回出るという確率をプログラムで求めろ、ということは。 nCr=n(n-1)(n-2)・・・/r(r-1)(r-1)・・・ を求めろということですね(式1と呼ぶ」)。 (2)は(1)の答え 1~r を全て足し算します。 今、FOR~NEXT の入れ子構造を習っているのではないですか? iとかjとかkとか ←見間違いに注意してください。 (1)フロー 画面クリア 変数初期化 式1の分子を B、分母をC とおく(A使う予定だったけどやめました) B=1 としておく C=1 としておく D=1 としておく P=2/6 としておく(3の倍数が出る確率) N を入力させる R を入力させる FOR i=1 TO R X=0 としておく B=B*(N-i+1) ※この式によって、分子に n、(n-1)、(n-2)・・(n-R+1) が順番に掛け算されて行きます C=C*i ※この式によって、分母に 1、2、・・r が順番に掛け算されて行きます R、R-1、R-2、・・1 という減る順番でも良かったんですけど、どうせ同じなので式をシンプルにしました ※宿題ならば、nCr を正しく理解しているか、も、FOR~NEXTの使い方と同時に試されていますよ! NEXT i IFを習っているということにして FOR i=1 TO N IF i<=R THEN D=D*P ELSE D=D*(1-P) NEXT i IFを習っていなかったら、2段階仕立て FOR i=1 TO R D=D*P NEXT i FOR i=R+1 TO N D=D*(1-P) NEXT i ただ、このやり方だとR=N のときは答えが狂ってきますから、IFが使えないと結構不便です IFを使わずにIFっぽいことをやる裏技 FOR i=1 TO N D=D*(-P*(i<=R)-(1-P)*(i>R)) NEXT i 最後 X=B/C*D Xを表示 (2) (1)の R を入力させる の後を以下のように変えます E=0 としておく FOR j=1 TO R (1)の FOR j=1 TO R から X=B/C*D まで そのまま E=E+X NEXT j Eを表示 以上です。
その他の回答 (1)
- QoooL
- ベストアンサー率66% (103/155)
自分ではどこまで作りましたか? どのような命令語を使うと思いますか? また、どのような命令語を理解していますか? ←これがわからないと、どこまで詳しく解説するか、に困ります。 ON GOTO を使え、という授業課題ですか? それとも普通に IF文 分岐ですか? ある程度 形を書いてくれたら、直してあげます。
お礼
ありがとうございました。 今後は詳しく書くように注意します。