ICTメディア編集U 2025年12月5日
プログラミング練習4(乱数とif文を用いたおみくじプログラム)
ここでは、プログラミングにおいてよく用いられる乱数(でたらめな数)を発生させる動作命令を用いて,さらにif文の条件分岐も用いたプログラミング練習として,おみくじのプログラムの作成を行っていきます.
〔乱数:でたらめな数〕
コンピュータを用いて,無作為に事象のいくつかのうちの一つを選択させたい場合などに,「乱数」と呼ばれるでたらめな数値を発生させる命令をよく用います.今回は,この乱数と前回から行っているif文を用いたプログラムを作成します。
乱数を発生させるコード(動作命令)の関数について次に解説します。関数とは、入力と出力の関係が決まっているVisual Basicで使用可能な式などを指しています。
·
乱数を発生させる関数(ランダム関数):Rnd()
Rnd という関数は、0以上1未満の乱数(でたらめな数)を発生する関数です。ですから、0から0.99999までの適当な数が1つ発生することになります。
例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倍である。
(「'」以後の文はコメントでプログラムに関係ないため、記述しなくてもプログラムは動作する)
·
でたらめの数の出る順番(種)をランダム(無作為)にする命令:Randomize()
でたらめの数の出る順番がいつも同じでないようにする命令です.これは、乱数の関数を使う前に一度だけ実行すれば良い命令です。そのため、フォームがロード(呼び出し)された時にこの命令を実行するようにしましょう。
フォーム部分を選択してクリックします。表示されたコードに、以下のようにRandomize() という命令を加えます。完成したら、実行してみましょう。
Private Sub
Form1_Load(ByVal
sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Randomize()
End Sub
演習課題(乱数:Rnd()と条件分岐:if文;おみくじ)
作成プログラム:おみくじプログラム
1)上記の乱数に関する説明を参考に,先に行った If 文を用いて、おみくじのプログラムを作成してください。
おみくじの分岐は3つ以上にしましょう。
例)

2)上記の例では,終了ボタンはありませんが,プログラムを終了させるためのボタンも作成してください。
演習課題の回答例:
1) 以下のようにフォームデザイナにツールボックス上のLabelとButtonのツールを使って,プログラム説明,おみくじの表示部分,おみくじボタンを配置し,プロパティで表示文字の大きさや文字などをかえておく.なお,おみくじの表示のLabelプロパティにおいて,配置の中の「AutoSize」を「False」にし、さらに「Size」を「100,
30」などとして(文字枠の大きさ)、「TextAlign」を「MiddleCenter」にしておくと,1文字でも2文字でも枠の真ん中に表示されるようになります.

2) おみくじボタンをクリックして,コードエディタを表示させます.まず,おみくじのために使用する乱数の範囲を決め,その値を入れておく,変数名(uranai)を決めて変数宣言を行います.おみくじボタン(Button1という名前)には,乱数とif文を用いて以下に示すコード例のようなコード(動作命令)を入力していきます.
おみくじの出る順番が同じでは,困りますので,「Randomize()」(でたらめの数の出る順番(種)をランダム(無作為)にする命令)」を,フォームをクリックして,ロードされたときには動作するようにしておきます.

コード(動作命令)の例:
Dim uranai As
Integer
Private Sub
Button1_Click(ByVal
sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
uranai = Int(Rnd() * 6 + 1)
If (uranai = 1) Then
Label2.Text = "凶"
ElseIf (uranai = 2 Or
uranai = 3) Then
Label2.Text = "吉"
Else
Label2.Text = "大吉"
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object,
ByVal
e As System.EventArgs) Handles
MyBase.Load
Randomize()
End Sub
この例では,変数uranaiに乱数で1から6までのでたらめな数が作られるようにして,そのuranaiの値をif文の判定によって,1であったときは「凶」,2か3の時は「吉」,それ以外(4か5か6)であるときは「大吉」とLabel2.Textに表示させている.
また,フォームをクリックし,プログラムが実行されたときに,乱数の発生する順番(種)が同じにならないように,Randomize()の命令を実行するようにしている.
3) ここまで入力をおえたら,実行してみる.

おみくじボタンをおすことで,おみくじ結果が変われば,完成です.終了させ,再度占ったときに,同じ占いの繰り返しでないかを確認して下さい.
4) 演習課題の指示に従って,終了のコマンドボタンをフォームにButtonのツールで配置し,終了ボタンに対するコードを追加しておきましょう.
5) 完成したら,すべてを保存しておきましょう.
6) また,おみくじの内容と出る確率について考えてみましょう。
乱数:1〜6 uranai = Int(Rnd() * 6 + 1)
凶:1(1/6: 16.6%) If (uranai = 1) Then
Label2.Text = "凶"
吉:2,3 (2/6
= 1/3: 33.3%) ElseIf (uranai = 2 Or
uranai = 3) Then
Label2.Text = "吉"
大吉:4,5,6 (3/6 = 1/2: 50%) Else
Label2.Text = "大吉"
End If
a) 大吉の出る確率を33.3%にし、吉の出る確率を50%、凶はそのままにしてみましょう。
b)大吉の出る確率を16.6%にし、吉の出る確率を残り66.6%、凶はそのままにしてみましょう。
7) さらに条件分岐を増やして、中吉を入れることしてみましょう。確率は、上記、b)の吉の確立を減らして、33.3%ずつに振り分けてみましょう。
8) さらに,条件分岐の部分を工夫し,おみくじの内容と出る確率なども考えて,プログラムを改良してみましょう.
9) また,わかりやすいように、一度、おみくじを消すボタンを設けること、終了ボタンを設けることをして,プログラムを改良してみましょう.
以上.