以下のコードを実行した際の結果として、最も適切なものはどれか。
以下の選択肢より1つ解答しなさい。
Sub Exam1()
Randomize
Dim N As Double
N = Rnd
If N >= 0 And N < 1 Then
MsgBox "乱数は0以上1未満の範囲です。"
Else
MsgBox "乱数は0以上1未満の範囲ではありません。"
End If
End Sub
1.メッセージボックスに「乱数は0以上1未満の範囲です。」と表示される。
2.メッセージボックスに「乱数は0以上1未満の範囲ではありません。」と表示される。
3.毎回異なる数値がメッセージボックスに表示されるが、その範囲は実行するたびに変動し予測できない。
4.コンパイルエラーが発生する。これはRandomize関数が引数を必要とするためである。
正解
1
解説
【5章 関数】
【Rnd関数】
●Rnd関数は、0以上1未満の乱数を返す関数です。
構文
Rnd(数値)・・・引数は省略可能です。
【コード解説】
以下のコードを実行した際の結果として、最も適切なものはどれか。
以下の選択肢より1つ解答しなさい。
Sub Exam1()
Randomize
’Randomize関数で乱数を初期化します。
Dim N As Double
’変数の型を少数のも格納できるDoubleで宣言します。
N = Rnd
’変数に0 Rnd関数で以上1未満の乱数を取得し格納する。
If N >= 0 And N < 1 Then
’条件分岐もし変数の値が条件式にある場合は以下の処理を実行します。
MsgBox "乱数は0以上1未満の範囲です。"
Else
’条件に合わない場合は以下の処理をを実行します。
MsgBox "乱数は0以上1未満の範囲ではありません。"
End If
End Sub

1.メッセージボックスに「乱数は0以上1未満の範囲です。」と表示される。
正しい。
Rnd関数は、常に0以上1未満の範囲の乱数を返します。したがって、If条件が真となり、このメッセージが表示されます。
2.メッセージボックスに「乱数は0以上1未満の範囲ではありません。」と表示される。
誤り。
Rnd関数の戻り値の範囲の定義に反します。
毎回異なる数値がメッセージボックスに表示されるが、その範囲は実行するたびに変動し予測できない。
誤り。
Rnd関数が返す具体的な数値はランダムですが、その範囲は0以上1未満と明確に定義されています。
コンパイルエラーが発生する。これはRandomize関数が引数を必要とするためである。
誤り。
Randomize関数の引数は省略可能であり 、このコードは構文上正しいです。