본문으로 바로가기
본문으로 바로가기

난수 생성 함수

이 섹션의 모든 함수는 0개 또는 1개의 인수만 받습니다. 인수(제공된 경우)의 유일한 목적은 공통 부분식 제거를 방지하여, 한 행 내에서 동일한 난수 함수를 두 번 실행하더라도 서로 다른 난수 값을 반환하도록 하는 것입니다.

관련 콘텐츠

참고

난수는 비암호학적(non-cryptographic) 알고리즘으로 생성됩니다.

참고

아래 문서는 system.functions 시스템 테이블에서 자동 생성되었습니다.

fuzzBits

도입된 버전: v20.5

입력 문자열 s의 각 비트를 확률 p로 뒤집습니다.

구문

fuzzBits(s, p)

인수

  • s — 비트 퍼징을 수행할 String 또는 FixedString 형식의 문자열
  • p — 각 비트가 뒤집힐 확률로, 0.01.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 정수를 반환합니다.

초기 상태를 시스템에서 가져오는 선형 합동 생성기(linear congruential generator)를 사용합니다. 이는 겉보기에는 무작위처럼 보이지만, 초기 상태를 알고 있으면 예측이 가능할 수 있어 진정한 의미의 난수는 아닙니다. 진정한 난수성이 중요한 시나리오에서는 시스템 수준 호출이나 외부 라이브러리 연동과 같은 대체 방법 사용을 고려하십시오.

구문

rand([x])

별칭: rand32

인자

  • x — 선택적이며 사용되지 않습니다. 이 인자의 유일한 목적은 동일한 함수 호출이 쿼리에서 여러 번 사용될 때 공통 부분식 제거가 수행되는 것을 방지하는 것입니다. Any

반환 값

UInt32 타입의 난수를 반환합니다. UInt32

예시

사용 예시

SELECT rand();
1569354847

rand64

도입 버전: v1.1

균등 분포를 따르는 난수 UInt64 값을 반환합니다.

초기 상태(시드)를 시스템에서 가져오는 선형 합동 생성기(linear congruential generator)를 사용합니다. 따라서 겉보기에는 무작위처럼 보이지만, 실제로는 진정한 난수가 아니며 초기 상태를 알고 있으면 예측이 가능할 수 있습니다. 진정한 무작위성이 중요한 시나리오에서는 시스템 호출을 사용하거나 외부 라이브러리와 연동하는 등의 다른 방법을 사용하는 것이 좋습니다.

구문

rand64([x])

인수

  • x — 선택적 인수로, 실제로는 사용되지 않습니다. 이 인수의 유일한 목적은 동일한 함수 호출이 하나의 쿼리에서 여러 번 사용될 때 공통 부분식 제거를 방지하는 것입니다. Any

반환 값

균일 분포를 따르는 임의의 UInt64 값을 반환합니다. UInt64

예시

사용 예

SELECT rand64();
15030268859237645412

randBernoulli

도입: v22.10

베르누이 분포(Bernoulli distribution)에서 추출한 Float64 난수를 반환합니다.

구문

randBernoulli(probability[, x])

인수

  • probability — 성공 확률을 01 사이 값으로 지정합니다. Float64
  • x — 선택적이며 무시됩니다. 이 인수는 동일한 함수 호출이 쿼리에서 여러 번 사용될 때 공통 부분식 제거가 수행되지 않도록 하기 위한 것입니다. Any

반환 값

지정된 베르누이 분포에서 추출한 임의의 Float64 값을 반환합니다. UInt64

예시

사용 예시

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

randBinomial

도입 버전: v22.10

이항 분포에서 추출한 임의의 Float64 값을 반환합니다.

구문

randBinomial(experiments, probability[, 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])

인자(Arguments)

  • x — 선택적이며 사용되지 않습니다. 이 인자의 유일한 목적은 동일한 함수 호출이 쿼리에서 여러 번 사용될 때 common subexpression elimination을 방지하는 것입니다. Any

반환 값

임의의 Float64 값을 반환합니다. Float64

예시

사용 예시

SELECT randCanonical();
0.345217890123456

randChiSquared

도입 버전: v22.10

카이제곱 분포를 따르는 무작위 Float64 값을 반환합니다.

구문

randChiSquared(degree_of_freedom[, x])

인수

  • degree_of_freedom — 자유도. Float64
  • x — 선택적 인수이며 무시됩니다. 이 인수의 목적은 동일한 함수 호출이 쿼리에서 여러 번 사용될 때 공통 부분식 제거를 방지하는 것입니다. 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])

인수(Arguments)

반환 값

각 행마다 동일한 난수 값을 가지는 UInt32 타입의 컬럼을 반환합니다. UInt32

예시(Examples)

기본 사용법

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 — 분포의 레이트(rate) 매개변수 또는 람다 값. 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 — 선택적 인수이며 무시됩니다. 이 인수의 유일한 목적은 동일한 함수 호출이 쿼리에서 여러 번 사용될 때 공통 부분식 제거를 방지하는 것입니다. 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 — 각 실험에서 실패할 확률로, 01 사이의 값입니다. Float64
  • x — 선택적 인수이며, 실제 연산에는 사용되지 않습니다. 이 인수의 목적은 동일한 함수 호출이 쿼리에서 여러 번 사용될 때 공통 부분식 제거를 방지하는 데 있습니다. 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

Poisson distribution에서 추출한 난수(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

Student's t-분포를 따르는 난수(Float64)를 반환합니다.

구문

randStudentT(degree_of_freedom[, x])

인수

  • degree_of_freedom — 자유도. Float64
  • x — 선택적이며 무시됩니다. 이 인수의 유일한 목적은 동일한 함수 호출이 하나의 쿼리에서 여러 번 사용될 때 common subexpression elimination을 방지하는 것입니다. Any

반환 값

지정된 Student 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)─┐
│ 𘤗𙉝д兠庇󡅴󱱎󦐪􂕌𔊹𓰛       │
└──────────────────────┘