8.4.5 RANDOM
最小値に指定した値以上,かつ最大値に指定した値未満の範囲での一様分布に従う擬似乱数を返します。
なお,RANDOMのほかにも擬似乱数を返すスカラ関数が幾つかあります。擬似乱数を返すスカラ関数の仕様差を確認して,用途に合ったスカラ関数を使用してください。擬似乱数を返すスカラ関数の仕様差については,「(6) 擬似乱数を返すスカラ関数の一覧」を参照してください。
(1) 指定形式
スカラ関数RANDOM::=RANDOM(〔最小値,最大値〕) 最小値::=値式 最大値::=値式
(2) 指定形式の説明
- 最小値:
-
乱数を生成する範囲の最小値(この値を含む)を指定します。引数の指定を省略した場合,最小値には0が仮定されます。
指定規則を次に示します。
-
最小値は,値式の形式で指定します。値式については,「7.21 値式」を参照してください。
-
最小値には,数データを指定してください。数データについては,「6.2.1 データ型の種類」の「(1) 数データ」を参照してください。
-
最小値に?パラメタを単独で指定した場合,DOUBLE PRECISION型が仮定されます。
-
- 最大値:
-
乱数を生成する範囲の最大値(この値を含まない)を指定します。引数の指定を省略した場合,最大値には1が仮定されます。
指定規則を次に示します。
-
最大値は,値式の形式で指定します。値式については,「7.21 値式」を参照してください。
-
最大値には,数データを指定してください。数データについては,「6.2.1 データ型の種類」の「(1) 数データ」を参照してください。
-
最大値に?パラメタを単独で指定した場合,DOUBLE PRECISION型が仮定されます。
-
(3) 規則
-
実行結果のデータ型は,DOUBLE PRECISION型になります。
-
実行結果の値は,非ナル値制約なし(ナル値を許す)となります。
-
最小値または最大値がナル値であれば,実行結果もナル値になります。
-
最小値と最大値をそれぞれDOUBLE PRECISION型に変換したあとで,実行結果を計算します。
-
最小値に指定した値Aと,最大値に指定した値Bの関係が,「A > B」を満たす場合,自動的に最小値と最大値を入れ替えます。そして,「B以上A未満」の範囲での一様分布に従う擬似乱数を返します。
-
最小値と最大値に同じ値を指定した場合,実行結果は最小値に指定した値になります。
-
実行結果のデータ型で実行結果を表現できない場合,オーバフローエラーになります。
-
最大値に0を指定した場合,実行結果に+0を返すことがあります。
(4) 留意事項
このスカラ関数は,暗号用途への使用には適していません。
(5) 例題
- 例題
-
表T1で,1以上10未満の範囲での一様分布に従うDOUBLE PRECISION型の値を求めます。
なお,SELECT文を実行するたびに,検索結果の値が変わります。
SELECT RANDOM(1,10) FROM "T1"
(6) 擬似乱数を返すスカラ関数の一覧
擬似乱数を返すスカラ関数は,RANDOMのほかにも次の3つがあります。
各スカラ関数の仕様差を次の表に示します。用途に合ったスカラ関数を使用してください。
項番 |
項目 |
スカラ関数RANDOM |
スカラ関数RANDOMCURSOR |
スカラ関数RANDOMROW |
スカラ関数RANDOM_NORMAL |
---|---|---|---|---|---|
1 |
形式 |
RANDOM(〔最小値,最大値〕) 最小値::=値式 最大値::=値式 |
RANDOMCURSOR(識別番号〔,最小値,最大値〕) 識別番号::=符号なし整数定数 最小値::=値指定 最大値::=値指定 |
RANDOMROW(識別番号〔,最小値,最大値〕) 識別番号::=符号なし整数定数 最小値::=値式 最大値::=値式 |
RANDOM_NORMAL(〔平均μ,標準偏差σ〕) 平均μ::=値式 標準偏差σ::=値式 |
2 |
擬似乱数の分布 |
一様分布 |
一様分布 |
一様分布 |
正規分布 |
3 |
擬似乱数の範囲 |
最小値に指定した値以上,最大値に指定した値未満の範囲 |
最小値に指定した値以上,最大値に指定した値未満の範囲 |
最小値に指定した値以上,最大値に指定した値未満の範囲 |
平均μ,標準偏差σに従う値 |
4 |
SQL文中で同じ識別番号となるスカラ関数は常に同じ値を返す |
- |
○ |
× |
- |
5 |
問合せ指定中で同じ識別番号となるスカラ関数は行ごとに同じ値を返す |
- |
○ |
○ |
- |
6 |
指定できる位置 |
値式 |
|
|
値式 |
- (凡例)
-
○:該当します。
×:該当しません。
-:対象外です。識別番号は指定できません。
- 注※
-
WITHINグループ指定,およびウィンドウ順序句中のORDER BY句には指定できません。