Rnd
Synopsis
Rnd[(number)]
引数
オプションの引数 number は、任意の有効な数値式です。
概要
Rnd 関数は 0 以上 1 未満の値を返します。桁数は、プラットフォームによって異なります。末尾のゼロは削除されます。
Rnd は、引数 number で与えられた seed 数値から一連の擬似乱数値を生成します。したがって、number の値が Rnd の乱数の生成方法を決定します。引数がない Rnd や、number が正の Rnd では、ランダム化された seed から乱数が生成されます。したがって、Rnd を連続して実行したとき、Rnd の number が同一で正の場合、異なる値が得られます。しかし、number が 0 の場合や負の数である場合、Rnd 関数を続けて呼び出すと、同じ seed が使用されるので、予測可能な値が返されます。
数値 | Rnd の生成値 |
---|---|
ゼロ以下 | 常に同じ値。seed として number を使用。例えば -7 では常に .5976062 が生成されます。 |
ゼロ以上 | シーケンス内の次の乱数 |
ゼロ | 生成された最新の乱数 |
なし | シーケンス内の次の乱数 |
最大限にランダム化するには、引数なしの Randomize 文を使用して、システム・タイマーを基にした seed 値で乱数ジェネレータを初期化します。次に、Rnd を呼び出します。
メモ
乱数のシーケンスを繰り返すには、数値の引数で Randomize を使う直前に、負の引数で Rnd を呼び出します。number に同じ値を与えて Randomize を使用しても、前のシーケンスは繰り返しません。
例
以下の例は、20 個の乱数を生成します。
For I = 1 To 20
Println Rnd
Next
Println "Done"
以下の例は、1 から 10 の範囲のランダムな整数を生成します。
Dim upperbound,lowerbound
upperbound = 10
lowerbound = 1
Println Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
以下の例は、引数 number に 0 を指定した場合の結果を示します。
For I = 1 To 10
Println Rnd
Println Rnd(0)
Next
Println "Done"
この場合、引数がない Rnd が乱数を生成し、Rnd(0) が最も後で生成された乱数を繰り返します。
以下の例は、引数 number に負の数を指定した場合の結果を示します。
For I = 1 To 10
Println Rnd
Println Rnd(-7)
Next
Println "Done"
この場合、引数がない最初の Rnd が乱数を生成し、Rnd(-7) が対応する値を計算して次の乱数に seed として渡します。したがって、上の例では Rnd に対する最初の呼び出しは実際にランダムですが、それ以降の呼び出しは、seed -7 に基づいています。したがって、各ループで予測可能な値が繰り返されます。