VBScriptで、Rnd関数を使用して、指定した範囲内の乱数を生成する方法を解説します。
Rnd関数について
Rnd関数は、0 以上 1 未満の値を返す関数です。
書式
Rnd関数の書式です。
引数[Number]は、数値や数値式となります。
Rnd(Number)
戻り値
Rnd関数の戻り値です。
引数[Number]の値 | 戻り値 |
---|---|
Number = 0 | 直前に生成した乱数の値を返します。 |
Number < 0 | 引数[Number]を使用し、その値によって決まる値を返します。 |
Number > 0 | 疑似ランダムシーケンスの次の番号を返します。 |
省略 | 疑似ランダムシーケンスの次の番号を返します。 |
使用例
以下は、Rnd関数を実行するサンプルです。
Randomize MsgBox(Rnd())
こちらのサンプルを実行すると、以下のような値が取得されます。
実行回数 | メッセージボックスで表示された値 |
---|---|
1 | 0.5782892 |
2 | 0.8191187 |
3 | 0.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
使用している関数について
サンプルコードで使用している関数や処理の詳細は、下記で解説しています。
リンク
コメント