【VBScript】Rnd関数で指定範囲の乱数を生成する


この記事はプロモーションを含みます。

VBScript

ホーム > VBScript 逆引きリファレンス

VBScriptで、Rnd関数を使用して、指定した範囲内の乱数を生成する方法を解説します。

Rnd関数について

Rnd関数は、0 以上 1 未満の値を返す関数です。

書式

Rnd関数の書式です。
引数[Number]は、数値や数値式となります。

Rnd(Number)

戻り値

Rnd関数の戻り値です。

引数[Number]の値戻り値
Number = 0直前に生成した乱数の値を返します。
Number < 0引数[Number]を使用し、その値によって決まる値を返します。
Number > 0疑似ランダムシーケンスの次の番号を返します。
省略疑似ランダムシーケンスの次の番号を返します。

使用例

以下は、Rnd関数を実行するサンプルです。

Randomize
MsgBox(Rnd())

1行目にある「Randomize」についての説明です。
これは、乱数ジェネレーターを初期化する処理で、これを実行することで、Rnd関数で乱数を生成することが可能となります。
Randomizeを実行せずに、ループ処理などでRnd関数を使用すると、結果が毎回同じ値になってしまうので、注意が必要です。

こちらのサンプルを実行すると、以下のような値が取得されます。

実行回数メッセージボックスで表示された値
10.5782892
20.8191187
30.9858362

指定した範囲内の乱数を生成する

指定した範囲内の乱数を生成する方法を説明します。

以下は、1から5までの整数をランダムで返すサンプルコードになります。

Option Explicit

' 乱数で生成する値の最小値
Const minNum = 1
' 乱数で生成する値の最大値
Const maxNum = 5

' 初期化
Randomize

' 乱数格納変数
Dim num

' 乱数取得
num = Int((maxNum - minNum + 1) * Rnd() + minNum)

' 結果確認
MsgBox(num)

乱数をテキストに出力する

テストデータなど作成する場合など、テキストに出力しておく方が何かと便利そうなので、作成してみました。

サンプルコード

サンプルのソースコードになります。
基本的には、定数部分を修正すれば使用出来るかと思います。

Option Explicit

' 乱数で生成する値の最小値
Const minNum = 1
' 乱数で生成する値の最大値
Const maxNum = 5
' 出力する乱数の数
Const rndNum = 15
' 出力するテキストファイルパス
Const filePath = ".\Sample.txt"

' 宣言
Dim fso, num, i, file

' ファイルシステムオブジェクトの作成
Set fso = CreateObject("Scripting.FileSystemObject")

' テキストファイルのオープン(追記モード)
Set file = fso.OpenTextFile(filePath, 8, True)

' ループしつつ、乱数をテキストに出力
For i = 1 To rndNum
	' 初期化
	Randomize

	' 乱数取得
	num = Int((maxNum - minNum + 1) * Rnd() + minNum)

	' テキストファイルに書き込み
	file.WriteLine(num)
Next

' ファイルを閉じる
file.Close

' ファイルシステムオブジェクトの破棄
Set fso = Nothing

実行結果

サンプルの実行結果です。

2
1
5
2
1
5
2
3
1
1
5
4
1
3
5

使用している関数について

サンプルコードで使用している関数や処理の詳細は、下記で解説しています。

コメント

タイトルとURLをコピーしました