メインコンテンツへスキップ
メインコンテンツへスキップ

乱数を生成する関数

このセクションのすべての関数は、引数を 0 個または 1 個受け取ります。引数(渡された場合)の唯一の用途は、共通部分式除去 を防止することです。これにより、同じ乱数関数が同一行内で複数回実行された場合でも、それぞれ異なる乱数値が返されます。

関連コンテンツ

注記

乱数は、暗号学的アルゴリズムではないアルゴリズムによって生成されます。

注記

以下のドキュメントは、system.functions システムテーブルから自動生成されています。

fuzzBits

導入バージョン: v20.5

入力文字列 s の各ビットを、確率 p で反転します。

構文

fuzzBits(s, p)

引数

  • s — ビットファジングを行う対象の String または FixedStringString または FixedString
  • p — 各ビットを反転させる確率を 0.0 から 1.0 の間の数値として指定します Float*

返り値

s と同じ型の、ファジングが行われた文字列を返します。String または FixedString

使用例

SELECT fuzzBits(materialize('abacaba'), 0.1)
FROM numbers(3)
┌─fuzzBits(materialize('abacaba'), 0.1)─┐
│ abaaaja                               │
│ a*cjab+                               │
│ aeca2A                                │
└───────────────────────────────────────┘

rand

導入バージョン: v1.1

一様分布に従う乱数の UInt32 値を返します。

初期状態(シード値)をシステムから取得する線形合同法による擬似乱数生成器を使用します。そのため見かけ上はランダムですが、真のランダムではなく、初期状態が知られている場合には予測可能になる可能性があります。 真のランダム性が重要となるシナリオでは、システムレベルの呼び出しや外部ライブラリとの連携など、代替手段の利用を検討してください。

構文

rand([x])

別名: rand32

引数

  • x — 省略可能であり、無視されます。この引数の唯一の目的は、同じ関数呼び出しがクエリ内で複数回使用される場合に、共通部分式除去 を防ぐことです。Any

返される値

UInt32 型の乱数を返します。UInt32

使用例

SELECT rand();
1569354847

rand64

導入バージョン: v1.1

一様分布に従う UInt64 型の乱数値を返します。

内部的には、初期状態をシステムから取得する線形合同法に基づく擬似乱数生成器を使用します。そのため見かけ上はランダムですが、真の乱数ではなく、初期状態が既知であれば予測可能です。 真のランダム性が重要となるシナリオでは、システムコールの利用や外部ライブラリとの連携など、代替手段の利用を検討してください。

構文

rand64([x])

引数

  • x — 省略可能であり、無視されます。この引数の唯一の目的は、クエリ内で同じ関数呼び出しが複数回使用される場合に、共通部分式除去 が行われるのを防ぐことです。Any

返される値

一様分布に従うランダムな UInt64 値を返します。UInt64

使用例

SELECT rand64();
15030268859237645412

randBernoulli

導入バージョン: v22.10

ベルヌーイ分布に従う Float64 型の乱数を返します。

構文

randBernoulli(probability[, x])

引数

  • probability — 成功確率を表す 0 から 1 の値。Float64
  • x — 省略可能で、無視されます。この引数の唯一の目的は、同じ関数呼び出しがクエリ内で複数回使用される場合に common subexpression elimination が行われるのを防ぐことです。Any

戻り値

指定されたベルヌーイ分布に従うランダムな Float64 値を返します。UInt64

使用例

SELECT randBernoulli(.75) FROM numbers(5)
┌─randBernoulli(0.75)─┐
│                   1 │
│                   1 │
│                   0 │
│                   1 │
│                   1 │
└─────────────────────┘

randBinomial

導入バージョン: v22.10

二項分布に従う Float64 型の乱数値を返します。

構文

randBinomial(試行回数, 確率[, x])

引数

  • experiments — 実験の回数 UInt64
  • probability — 各実験における成功確率。0 から 1 の間の値 Float64
  • x — オプションの引数で、無視されます。この引数の唯一の目的は、同じ関数呼び出しがクエリ内で複数回使用される場合に、共通部分式除去 が行われるのを防ぐことです。Any

戻り値

指定された二項分布に従うランダムな Float64 型の数値を返します。UInt64

使用例

SELECT randBinomial(100, .75) FROM numbers(5)
┌─randBinomial(100, 0.75)─┐
│                      74 │
│                      78 │
│                      76 │
│                      77 │
│                      80 │
└─────────────────────────┘

randCanonical

導入バージョン: v22.11

0(以上)から 1(未満)の一様分布に従う Float64 型の乱数を返します。

構文

randCanonical([x])

引数

  • x — 省略可能ですが、指定しても無視されます。クエリ内で同じ関数呼び出しが複数回使用される場合に 共通部分式除去 が行われるのを防ぐことだけを目的としています。Any

戻り値

ランダムな Float64 値を返します。Float64

使用例

SELECT randCanonical();
0.345217890123456

randChiSquared

導入バージョン: v22.10

カイ二乗分布に従う Float64 型の乱数値を返します。

構文

randChiSquared(degree_of_freedom[, x])

引数

  • degree_of_freedom — 自由度。Float64
  • x — 省略可能であり、無視されます。この引数の唯一の目的は、同じ関数呼び出しがクエリ内で複数回使用される場合に、common subexpression elimination が行われるのを防ぐことです。Any

戻り値

指定したカイ二乗分布からサンプリングされた、ランダムな Float64 値を返します。Float64

使用例

SELECT randChiSquared(10) FROM numbers(5)
┌─randChiSquared(10)─┐
│ 10.015463656521543 │
│  9.621799919882768 │
│   2.71785015634699 │
│ 11.128188665931908 │
│  4.902063104425469 │
└────────────────────┘

randConstant

導入バージョン: v1.1

現在のクエリ実行内のすべての行で一定となる、単一の乱数値を生成します。

この関数は次のように動作します:

  • 単一のクエリ内では、すべての行に対して同じ乱数値を返します
  • 異なるクエリ実行ごとに異なる値を生成します

データセット内のすべての行に対して、一貫した乱数シードや識別子を適用する場合に有用です。

構文

randConstant([x])

引数

  • x — 省略可能であり、無視されます。クエリ内で同じ関数呼び出しが複数回使用されたときに 共通部分式の除去 が行われるのを防ぐことだけを目的とする引数です。Any

返される値

各行で同じ乱数値を含む UInt32 型の列を返します。UInt32

基本的な使用方法

SELECT randConstant() AS random_value;
| random_value |
|--------------|
| 1234567890   |

パラメータ付きでの利用方法

SELECT randConstant(10) AS random_value;
| random_value |
|--------------|
| 9876543210   |

randExponential

導入バージョン: v22.10

指数分布に従う Float64 型の乱数値を返します。

構文

randExponential(lambda[, x])

引数

  • lambda — 分布のレートパラメータ(λ 値)。Float64
  • x — 省略可能で、無視されます。この引数の唯一の目的は、同じ関数呼び出しがクエリ内で複数回使用される場合に 共通部分式除去 が行われるのを防ぐことです。Any

戻り値

指定された指数分布から生成される乱数の Float64 値を返します。Float64

使用例

SELECT randExponential(1/10) FROM numbers(5)
┌─randExponential(divide(1, 10))─┐
│              44.71628934340778 │
│              4.211013337903262 │
│             10.809402553207766 │
│              15.63959406553284 │
│             1.8148392319860158 │
└────────────────────────────────┘

randFisherF

導入バージョン: v22.10

F分布に従う Float64 型の乱数を返します。

構文

randFisherF(d1, d2[, x])

引数

  • d1X = (S1 / d1) / (S2 / d2) における d1 の自由度。Float64
  • d2X = (S1 / d1) / (S2 / d2) における d2 の自由度。Float64
  • x — 省略可能で、評価時には無視されます。この引数の唯一の目的は、同じ関数呼び出しがクエリ内で複数回使用される場合に、common subexpression elimination が行われるのを防ぐことです。Any

戻り値

指定された F 分布から生成された乱数(Float64 型)を返します。Float64

使用例

SELECT randFisherF(10, 3) FROM numbers(5)
┌─randFisherF(10, 20)─┐
│  0.7204609609506184 │
│  0.9926258472572916 │
│  1.4010752726735863 │
│ 0.34928401507025556 │
│  1.8216216009473598 │
└─────────────────────┘

randLogNormal

導入バージョン: v22.10

対数正規分布に従う Float64 型の乱数値を返します。

構文

randLogNormal(mean, stddev[, x])

引数

  • mean — 分布の平均値。Float64
  • stddev — 分布の標準偏差。Float64
  • x — 省略可能で、指定しても無視されます。この引数の唯一の目的は、同じ関数呼び出しがクエリ内で複数回使用される場合に、共通部分式の除去が行われるのを防ぐことです。Any

返り値

指定された対数正規分布から生成される Float64 型の乱数を返します。Float64

使用例

SELECT randLogNormal(100, 5) FROM numbers(5)
┌─randLogNormal(100, 5)─┐
│  1.295699673937363e48 │
│  9.719869109186684e39 │
│  6.110868203189557e42 │
│  9.912675872925529e39 │
│ 2.3564708490552458e42 │
└───────────────────────┘

randNegativeBinomial

導入: v22.10

負の二項分布に従う Float64 型の乱数値を返します。

構文

randNegativeBinomial(experiments, probability[, x])

引数

  • experiments — 実験の回数。UInt64
  • probability — 各実験における失敗確率(0 から 1 の間の値)。Float64
  • x — 省略可能で、値は使用されません。この引数の唯一の目的は、同じ関数呼び出しがクエリ内で複数回使用された場合に common subexpression elimination が行われるのを防ぐことです。Any

戻り値

指定された負の二項分布から生成された乱数の Float64 値を返します。UInt64

使用例

SELECT randNegativeBinomial(100, .75) FROM numbers(5)
┌─randNegativeBinomial(100, 0.75)─┐
│                              33 │
│                              32 │
│                              39 │
│                              40 │
│                              50 │
└─────────────────────────────────┘

randNormal

導入: v22.10

正規分布に従う Float64 型の乱数値を返します。

構文

randNormal(mean, stddev[, x])

引数

  • mean — 分布の平均値 Float64
  • stddev — 分布の標準偏差 Float64
  • x — 任意の引数であり、値は使用されません。この引数は、同じ関数呼び出しがクエリ内で複数回使用される場合に、共通部分式除去 が行われるのを防ぐためだけに存在します。Any

戻り値

指定された正規分布から生成されたランダムな Float64 値を返します。Float64

使用例

SELECT randNormal(10, 2) FROM numbers(5)
┌──randNormal(10, 2)─┐
│ 13.389228911709653 │
│  8.622949707401295 │
│ 10.801887062682981 │
│ 4.5220192605895315 │
│ 10.901239123982567 │
└────────────────────┘

randPoisson

導入: v22.10

ポアソン分布 に従う乱数を Float64 型の数値として返します。

構文

randPoisson(n[, x])

引数

  • n — 発生回数の平均。UInt64
  • x — 省略可能で、評価時には使用されません。この引数の唯一の目的は、同じ関数呼び出しがクエリ内で複数回使用されている場合に共通部分式の除去が行われるのを防ぐことです。Any

戻り値

指定されたポアソン分布に従う Float64 型の乱数を返します。UInt64

使用例

SELECT randPoisson(10) FROM numbers(5)
┌─randPoisson(10)─┐
│               8 │
│               8 │
│               7 │
│              10 │
│               6 │
└─────────────────┘

randStudentT

導入: v22.10

スチューデントの t 分布に従う Float64 型の乱数値を返します。

構文

randStudentT(degree_of_freedom[, x])

引数

  • degree_of_freedom — 自由度。Float64
  • x — 省略可能で、評価時には無視されます。この引数の唯一の目的は、同じ関数呼び出しがクエリ内で複数回使用される場合に common subexpression elimination が行われるのを防ぐことです。Any

戻り値

指定されたスチューデントの t 分布に従うランダムな Float64 数値を返します。Float64

使用例

SELECT randStudentT(10) FROM numbers(5)
┌─────randStudentT(10)─┐
│   1.2217309938538725 │
│   1.7941971681200541 │
│ -0.28192176076784664 │
│   0.2508897721303792 │
│  -2.7858432909761186 │
└──────────────────────┘

randUniform

導入バージョン: v22.10

区間 [min,max][\min, \max] から一様分布に従うランダムな Float64 値を返します。

構文

randUniform(min, max[, x])

引数

  • min — 範囲の左端(含む)。Float64
  • max — 範囲の右端(含む)。Float64
  • x — 省略可能で、常に無視されます。この引数の唯一の目的は、同じ関数呼び出しがクエリ内で複数回使用される場合に、共通部分式の削除を防ぐことです。Any

戻り値

minmax で定まる区間から、一様に抽出された乱数を返します。Float64

利用例

SELECT randUniform(5.5, 10) FROM numbers(5)
┌─randUniform(5.5, 10)─┐
│    8.094978491443102 │
│   7.3181248914450885 │
│    7.177741903868262 │
│    6.483347380953762 │
│    6.122286382885112 │
└──────────────────────┘

randomFixedString

導入バージョン: v20.5

指定した文字数の固定長のランダムな文字列を生成します。 返される文字は必ずしも ASCII 文字とは限らず、表示可能でない場合があります。

構文

randomFixedString(length)

引数

  • length — 文字列の長さ(バイト数)。UInt*

戻り値

ランダムなバイト列で埋められた文字列を返します。FixedString

使用例

SELECT randomFixedString(13) AS rnd, toTypeName(rnd)
┌─rnd──────┬─toTypeName(randomFixedString(13))─┐
│ j▒h㋖HɨZ'▒ │ FixedString(13)                 │
└──────────┴───────────────────────────────────┘

randomPrintableASCII

導入バージョン: v20.1

指定した文字数のランダムな ASCII 文字列を生成します。

length < 0 を渡した場合、この関数の動作は未定義です。

構文

randomPrintableASCII(length[, x])

引数

  • length — 文字列の長さ(バイト数)。(U)Int*
  • x — 省略可能な引数で、無視されます。この引数の唯一の目的は、同じ関数呼び出しがクエリ内で複数回使用される場合に、共通部分式除去が行われるのを防ぐことです。Any

返される値

ASCII の印字可能文字からなるランダムな文字列を返します。String

使用例

SELECT number, randomPrintableASCII(30) AS str, length(str) FROM system.numbers LIMIT 3
┌─number─┬─str────────────────────────────┬─length(randomPrintableASCII(30))─┐
│      0 │ SuiCOSTvC0csfABSw=UcSzp2.`rv8x │                               30 │
│      1 │ 1Ag NlJ &RCN:*>HVPG;PE-nO"SUFD │                               30 │
│      2 │ /"+<"with:=LjJ Vm!c&hI*m#XTfzz │                               30 │
└────────┴────────────────────────────────┴──────────────────────────────────┘

randomString

導入バージョン: v20.5

指定した文字数のランダムな文字列を生成します。 返される文字は必ずしも ASCII 文字とは限らないため、表示可能な文字でない場合があります。

構文

randomString(length[, x])

引数

  • length — 文字列の長さ(バイト数)。(U)Int*
  • x — 省略可能で、評価時には無視されます。この引数の唯一の目的は、同じ関数呼び出しがクエリ内で複数回使用される場合に、共通部分式の除去が行われるのを防ぐことです。Any

戻り値

ランダムなバイトから成る文字列を返します。String

使用例

SELECT randomString(5) AS str FROM numbers(2)
���
�v6B�

randomStringUTF8

導入バージョン: v20.5

指定したコードポイント数のランダムな UTF-8 文字列を生成します。 未割り当ての (第 4 面から第 13 面)のコードポイントは返されません。 ただし、ClickHouse サーバーとやり取りしているクライアント側で、生成された UTF-8 文字列を正しく表示できない可能性があります。

構文

randomStringUTF8(length)

引数

  • length — 文字列の長さ(コードポイント数)。(U)Int*

戻り値

ランダムな UTF-8 コードポイントからなる文字列を返します。String

使用例

SELECT randomStringUTF8(13)
┌─randomStringUTF8(13)─┐
│ 𘤗𙉝д兠庇󡅴󱱎󦐪􂕌𔊹𓰛       │
└──────────────────────┘