Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

Rnd

乱数を返します。

Synopsis

Rnd[(number)]

引数

オプションの引数 number は、任意の有効な数値式です。

概要

Rnd 関数は 0 以上 1 未満の値を返します。桁数は、プラットフォームによって異なります。末尾のゼロは削除されます。

Rnd は、引数 number で与えられた seed 数値から一連の擬似乱数値を生成します。したがって、number の値が Rnd の乱数の生成方法を決定します。引数がない Rnd や、number が正の Rnd では、ランダム化された seed から乱数が生成されます。したがって、Rnd を連続して実行したとき、Rndnumber が同一で正の場合、異なる値が得られます。しかし、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 に基づいています。したがって、各ループで予測可能な値が繰り返されます。

関連項目

FeedbackOpens in a new tab