VBS組み込み関数であるRnd関数は0以上、1未満の値を返すため、範囲を指定してランダムな整数を生成する場合には以下のように変換が必要になる。
Dim upper : upper = 100
Dim lower : lower = 50
Wscript.echo Int((upper - lower) * Rnd + lower)
この方法は可読性が悪い。範囲を指定したランダムな整数の生成は.NET の System.Random を使うとシンプルに書くことができる。
Dim myRandom
Set myRandom = CreateObject("System.Random")
' 指定した範囲のランダムな整数を取得
Wscript.echo myRandom.Next_2(50, 100)
' 0 以上のランダムな整数を取得
Wscript.echo myRandom.Next()
' 0.0 と 1.0 の間のランダムな浮動小数点数を取得
Wscript.echo myRandom.NextDouble()
ただしRnd関数ではRandomize関数によって乱数シードを設定できるのに対して、VBSでSystem.Randomを使う場合には乱数シードを設定することはできない。
これは System.Random の乱数シードはコンストラクタの引数で設定する必要があるが、VBSでは.NETのコンストラクタを呼ぶことができないため。