ICTメディア編集U 20251212

 

簡単な事象を模擬するプログラムの作成(乱数を用いたプログラム)

 

ある事象を模擬する場合においては,その事象の特徴をモデル化し,要因を整理して関係式を導き出すことで,シミュレーションすることが可能となります.

ここではある事象が等確率で発生するはずである,サイコロを模擬するシミュレーションのプログラムを作成してみます.

 

サイコロを模擬した電子サイコロのプログラムを作成してみましょう

 

 サイコロの数値は1から6までであり、それぞれの数が出る確率は、均等で6分の1です。確率的なモデルが要因として存在していることになる.コンピュータを用いて、このような数を出させるには、乱数(でたらめな数)を発生させる命令を用いたプログラムを作成します。

 このでたらめな数を発生させるコード(動作命令)の関数は,乱数(Rnd)を用います.乱数に関しては先週,おみくじのプログラムで使用しましたが,再度,復習を兼ねて行います.以下にその説明を掲載します.


 動作命令コードの説明

·   乱数を発生させる関数(ランダム関数)Rnd()

Rnd という関数は、0以上1未満の乱数(でたらめな数)を発生する関数です。ですから、0から0.99999までの適当な数が1つ発生することになります。(関数とは、入力と出力の関係が決まっているVisual Basicで使用可能な式などをさしています。)

例1)ss = 10 * Rnd()

ss (変数)には、0以上10未満の小数点を含む乱数(でたらめな数)が代入されます.ですから、0から9.9999までの適当な数がssに入ります。

 

·   整数変換用関数:Int( )

Int( )というのは、整数に変換する関数で、カッコ内の数値を切捨てした整数(小数点以下切捨て)に置きかえします。

例)kk = Int(10 * Rnd() + 1)

そのため、kk には、1から10までの整数の乱数(でたらめな数)が代入されます。Rnd関数は、0以上1未満の乱数で、Int関数は、切り捨てであるため、1を加算することで、1から10までの数を出すことが可能となります。

 

さらに、いくつかの参考となるコードを説明しておきます。

·    「終了」の命令:End 

プログラムを終了させます。これは,前回,既に使っています.以下の命令は,ボタン2をクリックするとプログラムが終了するものです.

     例)    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

          End

 End Sub

 

·    コメント:

プログラムの説明などを記述するための文である。行の最初にアポストロフィ「’」を記述すると、その行はコメントとなり、プログラムの実行には何も関係がなくなる。

例)aa = bb * 100  'aa の値は、bb の値の100倍である。

(「'」以後の文はコメントでプログラムに関係ないため、記述しなくてもプログラムは動作する)

 

 


 

注意) 現在,教室・実習室には,Microsoft Visual Studio 2022がインストールされております。Visual Studio 2022が現在、明治大学の学生であれば、ダウンロード可能ですし、Visual Studio community 2022は商用利用で無い場合には無償提供されています。

以下の説明の画面は,若干古い画面が混ざっています。画面やツールなどが若干変更となっておりますが,類推しながら進めてください。

 

 

演習問題(電子サイコロ)

上記のことを参照して,電子サイコロを以下のように作成していきましょう。

 

1)Visual Basicを起動します。 

a.    ディスクトップ上の「スタート」メニューからVisual Studio 2022」をクリックする。

※設定によって若干立ち上がりの画面が異なる可能性があります.

b.    これまでの同様に「新しいプロジェクト」を開いてください。

プロジェクトの種類は,Visual Basic ディスクトップ」,テンプレートはWindowsフォームアプリケーション」,プロジェクト名はdice1にして,「OK」ボタンをクリックします.

 

2)先週と同じく,ツールボックスのLabelButtonを使って,以下のようなフォームをデザインします.Labelはサイコロの目の数が表示されますので,字の大きさなどもプロパティで変更しておきましょう. 

 

3)フォームのデザインができたら,「サイコロを振る」ボタンをクリックして,コードエディタで乱数を発生させる命令を書き込みます.このとき,表示させるのは,Label1.Textになります.乱数を用いて,1〜6までの整数をランダムに発生させるようにします. 「終了」ボタンも終了命令を書き込みます.

 

     例) Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

          Label1.Text = Int(Rnd() * 6 + 1)

            End Sub

 

            Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

               End

            End Sub

 

4)サイコロをここまで入力をおえたら,実行してみましょう.

 

5)上記のプログラムを実行してみて、気がついたことがありますか。プログラムを終了しサイコロを振ってみてください.

プログラムを終了して再度サイコロを振ると先ほどと同じ順番でサイコロの目が出てきます.すなわち,でたらめの数の出る順番がいつも同じなのです.

 

これでは、サイコロにはなりません。そこでこれを解決するのがRandomize() という命令です。これは、乱数の関数を使う前に一度だけ実行すれば良い命令です。そのため、フォームがロード(呼び出し)された時にこの命令を実行するようにしましょう。

フォーム部分を選択してクリックします。表示されたコードに、以下のようにRandomize() という命令を加えます。完成したら、実行してみましょう。

 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Randomize()

End Sub

 

入力したら,再度,実行してみましょう.

サイコロを振るというボタンをおすことで,サイコロの目の値がランダムに表示されれば,完成です.また,終了ボタンで終了させ,再度サイコロを振ったときに,同じサイコロの目の繰り返しでないかを確認して下さい.

 

 

6)完成したら,“すべてを保存”で,保存しておきましょう.

    メニューバーのファイルの中の「すべてを保存」を選択し,保存します.

 

 


  加藤のページへ | ICTメディア編集U | 繰り返し処理(タイマー関数)を用いたプログラムの作成