●さいころを振ると1〜6のうちどれかがでます。どれがでやすいということなく同じ確率ででます。ただし回数が少ないうちは同数でるとはかぎりません。つまり5回振って1〜5まで一回ずつでたからといって、つぎが6とは限らないということです。回数を重ねると同数に近くなります。
●1から10までの乱数を発生させる式をつくり、上の例のように多数回乱数を発生させてだいたい同数回になることを確認するプログラムを作りなさい。
●100000回やったときのものです。この程度の差は出ます。10000前後になるので、10001 と 9999 とではかなり違うように見えますが実は2しか違わない。10000円のうちの2円の違いです。
1 10096 2 10156 3 9981 4 10075 5 9837 6 10047 7 9911 8 10089 9 9909 10 9899
●さいころの代わりになるプログラムを作りなさい。つまり、1回の実行で1から6の目が1つ出てくるプログラムにします。出てくる目は数字ではおもしろくないので、さいころに近くなるように工夫します。たとえば、
PRINT "● ●" PRINT PRINT " ●" PRINT PRINT "● ●"
というようにしましょう。
●この問題では FOR 〜 NEXT は必要ありません。配列も必要ありません。まず1〜6の数を出して変数(名前は任意)に代入しておきます。
●たとえば、変数 i に1〜6の数が入っているとします。この数にしたがって、IF 文を使用して目の模様を書き分けます。いろいろな方法があります。どれかひとつを使ってください。
●複雑な条件判断の中ほどに解説されている、IF ELSEIF ENDIF を使用するのがいいでしょう。
IF i=1 THEN 1の時の処理 ELSEIF i=2 THEN 2の時の処理 ELSEIF i=3 THEN ・・・・・・ ELSEIF i=6 THEN 6の時の処理 END IF
●最後の ELSEIF i=6 THEN の部分は ELSE に変えてもかまいません。
●この方法は効率は悪いのですが、結果は方法1と同じです。END IF を忘れてはいけません。
IF i=1 THEN 1の時の処理 END IF IF i=2 THEN 2の時の処理 END IF IF i=3 THEN ・・・・・・ END IF IF i=6 THEN 6の時の処理 END IF
●これはわかりにくいので絶対にやめましょう。
IF i=1 THEN 1の時の処理 ELSE IF i=2 THEN 2の時の処理 ELSE IF i=3 THEN 3の時の処理 ELSE IF i=4 THEN 4の時の処理 ELSE IF i=5 THEN 5の時の処理 ELSE 6の時の処理 END IF END IF END IF END IF END IF
●こんなときにぴったりな、CASE 文です。ここではじめて登場です。SELECT と END SELECT で囲んだ中に書きます。i=1 のとき i=2 のとき‥‥という意味です。
SELECT CASE i CASE 1 1の時の処理 CASE 2 2の時の処理 CASE 3 3の時の処理 CASE 4 4の時の処理 CASE 5 5の時の処理 CASE 6 6の時の処理 END SELECT