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?

$RANDOM

指定した範囲での擬似ランダム整数値を返します。

Synopsis

$RANDOM(range)
$R(range)

パラメータ

range 有効な乱数の範囲の上限を指定するために使用されるゼロ以外の正の整数。

概要

$RANDOM は、0 から range -1 (包含的) の間の擬似ランダム・データ整数値を返します。したがって、$RANDOM(3) は 0、1、2 を返します。ただし、3 は返しません。返される数は、指定した範囲で一様に分散されます。

$RANDOM は、ほとんどの目的において十分にランダムです。厳密にランダムな値を必要とするアプリケーションでは、%SYSTEM.EncryptionOpens in a new tab クラスの GenCryptRand()Opens in a new tab メソッドを使用する必要があります。

パラメータ

range

この値は、有効な乱数の範囲の上限を指定します。乱数の最大値は range マイナス 1 になります。range の値には、ゼロ以外の正の整数、整数変数名、またはゼロ以外の正の整数に評価される任意の有効な ObjectScript 式を指定できます。range の最大値は、1E17 (100000000000000000) です。この最大値を超える値を指定すると、<FUNCTION> エラーが発生します。$RANDOM(1) は有効ですが、常に 0 を返します。$RANDOM(0) は <FUNCTION> エラーになります。

以下の例は、0 から 24 まで (包含的) の乱数を返します。

   WRITE $RANDOM(25)

小数点部分の乱数を返すには、連結演算子 (_)、または加算演算子 (+) を以下の例のように使用することができます。

   SET x=$RANDOM(10)_$RANDOM(10)/10
   WRITE !,x
   SET y=$RANDOM(10)+($RANDOM(10)/10)
   WRITE !,y

このプログラムは、小数点部分が 1 桁の .0 から 9.9 (包含的) までの数を返します。いずれかの演算子を使用して、Caché は先頭と末尾のゼロ (および小数部分がゼロの場合は小数点) を削除します。ただし、両方の $RANDOM 関数がゼロ (0 や .0) を返す場合、Caché は、ゼロ (0) を返します。

以下は、2 つのさいころを振る場合を想定した例です。

Dice
   FOR {
      READ "Roll dice? ",reply#1
      IF "Yy"[reply,reply'="" {
         WRITE !,"Pair of dice: "
         WRITE $RANDOM(6)+1,"+",$RANDOM(6)+1,! }
      ELSE { QUIT }
   }
FeedbackOpens in a new tab