確率モデル(サイコロ)問題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 画面で開いて実際に試すことができます。プログラムを実行したいときは、エディターの右下にある青色の「実行」ボタンを押してください。

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のときの中身を画面に表示します。

問題の引用元:

文部科学省「高等学校情報科「情報Ⅰ」教員研修用教材 第3章 コンピュータとプログラミング」(2020)