Rnd 関数は単精度浮動小数点数型 (Single) で0以上1未満の乱数を返します。
Rnd関数の使用方法
省略 | 説明 | |
---|---|---|
Number | ○ | 省略可能な引数です。 省略しない場合は単精度浮動小数点数型 (Single) の数値または任意の有効な数式を指定します。 |
Number の値 | 戻り値 |
---|---|
< 0 | 常に、引数 Number のシード値によって決まる同じ数値を返します。 |
> 0 | 乱数系列の次の乱数を返します。 |
0 | 直前に生成した乱数を返します。 |
省略したとき | 乱数系列の次の乱数を返します。 |
Rnd関数の使用例
毎回同じ乱数を生成する
毎回同じ乱数を発生させる例です。最初にRnd 関数の引数にマイナスのシード値を指定することで決まった値を発生させます。その後、Rnd 関数を引数なしで呼び出して同じ乱数系列を再現しています。
Sub sample_ef064_01()
Dim i As Integer
'再現したい乱数系列のシード値(任意)をマイナスで指定
Rnd (-2.5)
'乱数を5回発生
For i = 1 To 5
Debug.Print "i=" & i & ":" & Rnd
Next i
End Sub
毎回異なる乱数を生成する
毎回異なる乱数を発生させる例です。Randomize ステートメントを引数なしで呼び出すことで、システムタイマーをもとにしたシード値を乱数ジェネレータに設定します。その後 Rnd 関数を呼び出すことで毎回異なる乱数を発生させることができます。
Randomize ステートメントを呼び出して乱数のシード値を変更しないと、エクセル再起動後の結果が同じになってしまいますので注意してください。
Sub sample_ef064_02()
'サイコロの試行にみたてて1~6の乱数を発生させ、
'その回数をカウントします。
'数値型の変数はゼロで初期化されます。
Dim cnt(1 To 6) As Long
Dim i As Long
Dim num As Integer
'乱数ジェネレータの初期化
Randomize
For i = 1 To 1000
'1~6までの乱数を発生
num = Int(6 * Rnd + 1)
'出た目のカウントを加算
cnt(num) = cnt(num) + 1
Next i
'それぞれの出た回数を表示
For i = 1 To 6
Debug.Print i & "の目:" & cnt(i) & "回"
Next i
End Sub