確率モデル(サイコロ)問題3
説明
確率モデル(サイコロ)問題2のプログラムを使って、サイコロそれぞれの出目が何回あったのかを数えます。
出目がそれぞれ何回あったかを、demeという名前の配列に代入するプログラムを作ります。出目の回数を数えるには、下の関数を使ってください。確認のため、最後に配列demeの中身を画面に表示します。
ヒント
* プロシージャの使い方をリファレンスやプログラマーズガイドで確認しよう
出目の回数を数える関数:
function count(a@, min_soeji, max_soeji, x)
cls 1
number = 0
for i = min_soeji to max_soeji
if a@[i] = x then
number = number + 1
end if
next
return number
end function
Studioで試す
以下のリンクから Jasmine Tea でこのサンプルプログラムを Studio 画面で開いて実際に試すことができます。プログラムを実行したいときは、エディターの右下にある青色の「実行」ボタンを押してください。
プログラム
function count(a@, min_soeji, max_soeji, x)
cls 1
number = 0
for i = min_soeji to max_soeji
if a@[i] = x then
number = number + 1
end if
next
return number
end function
saikoro@=[]
deme@=[]
for i = 1 to 100
saikoro@[i] = random(1,6)
next
for i = 1 to 6
number = count(saikoro@,1,100,i)
deme@[i]=number
next
for i = 1 to 6
print deme@[i]
next
解説
1行目から9行目までは出目の回数を数える関数を定義しています。
1行目で関数の名前と、使用する仮引数を定義しています。countは関数の名前、aは配列の名前、min_soejiは配列の添え字の最小値、max_soejiは配列の添え字の最大値、xは出目の種類を意味します。関数の名前以外はすべて仮引数です。今回のプログラムでは、この関数を使って数えた回数を戻り値としています。
2行目で画面の文字を消去しています。
3行目でnumberを0と定義しています。6行目で、出目を数えるために、指定の出目が出るたびにnumberに1が加算されていきます。そのため、まだ数えていない状態として0と定義しています。
4行目でmin_soejiからはじめてmax_soejiまでの数値をforを使ってiに入れていきます。このiは5行目で配列aの添え字として使われます。
5行目ではifを使って、配列の中身がxと同じだった場合の分岐処理を定義しています。xは出目の種類で、1~6の数値が入ります。
6行目でxの数値が出現した回数を数えるために、xが出現するたびに1を加算しています。
12行目と13行目は配列を定義しています。
12行目はサイコロを100回振ったときの結果を代入する配列saikoroを定義しています。
13行目は出目が何回あったか数えた結果を代入する配列demeを定義しています。
15行目から17行目は配列saikoroにサイコロを100回振ったときの結果を代入しています。
15行目で1からはじめて100までの数値をforを使って変数iに入れていきます。このiは4行目で、配列saikoroの添え字として使われます。
16行目で添え字iの配列saikoroに、random関数を使って1~6までのランダムな数値を代入します。
19行目から22行目は配列demeにそれぞれの出目が何回あったか数えた結果を代入しています。 19行目で1から始めて6までの数値をforを使って変数iに入れていきます。このiは、20行目では今数えている出目を表す数値として、21行目では配列demeの添え字として使われます。
20行目では、1行目から9行目で定義した関数countを呼び出しています。定義した仮引数に対応する実引数として、配列名aに配列名saikoroを、min_soejiに1を、max_soejiに100を、xに今数えている出目を表すiを渡しています。
21行目で関数countで数えた結果を示すnumberを、配列demeに代入しています。
24行目から26行目は配列demeの中身を画面に表示しています。
24行まで1から始めて6までの数値をforを使って変数iに入れていきます。このiは、25行目で配列demeの添え字として使われます。
25行目で配列demeのiのときの中身を画面に表示します。
問題の引用元: