VBA 乱数を発生させるRnd関数 初期化するRandomizeステートメント

スポンサーリンク

Rnd【ランダム】関数

ランダムな数値(疑似乱数)を発生させるには、Rnd 【ランダム】関数を使用します。

Rnd【ランダム】関数の書式と引数の説明

[]内は省略可能です。
Rnd([Number])
【戻り値】単精度浮遊小数点数型(Single)の値

  • Number【ナンバー】(省略可)
    乱数を発生させる方法を指定します。
引数Numberの設定値 乱数を発生させる方法
0未満の数値 常に同じ数値を返します。
返る数値は引数Numberの値によって決まります。
0より大きい数値 乱数系列から次の乱数を返します。
0 直前に生成した乱数と同じ値を返します。
省略した場合 乱数系列から次の乱数を返します。

※通常は引数Numberは省略して使用します。
※乱数系列とは、規則性のないランダムな数値の並びのことで、シード値と呼ばれる値から算出されます。同じシード値からは同じ乱数系列が算出されるのでこの場合は同じ順序で乱数が発生します。
※違う乱数を発生させるには、Randomize【ランダマイズ】ステートメントを使用して乱数系列を初期化します。


発生させる乱数の範囲を指定する式

Rnd【ランダム】関数が返す乱数の範囲は0以上1未満ですが、下記の計算式によって任意の最大値と最小値の範囲の乱数を発生させることができます。


Int((最大値-最小値+1)*Rnd+最小値)


Randomize【ランダマイズ】ステートメント

乱数系列を初期化するには、Randomize【ランダマイズ】ステートメントを使用します。

Randomize【ランダマイズ】ステートメントの書式と引数の説明

[]内は省略可能です。
Randomize([Number])

  • Number【ナンバー】(省略可)
    乱数系列を初期化するシード値を指定します。省略した場合は、パソコンに設定されているシステム時刻からシード値を算出します。

※引数Numberにシート値を設定すると、同じ乱数が生成されて同じ順番で乱数が発生します。常に違う乱数を発生させるためには、引数Numberを省略します。


選択範囲のセルに50万~35万の間の乱数を代入するコード例

Sub 乱数()
Dim i As Range
Randomize
For Each i In Selection
i = Int((500000 - 350000 + 1) * Rnd + 350000)
Next i
End Sub

実行結果


以上で、Rnd【ランダム】関数とRandomize【ランダマイズ】ステートメントについての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告