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

무작위 수 생성 함수

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

관련 콘텐츠

참고

무작위 수는 암호화용이 아닌(non-cryptographic) 알고리즘으로 생성됩니다.

참고

아래 문서는 system.functions 시스템 테이블로부터 생성됩니다.

fuzzBits

도입된 버전: v20.5.0

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

구문

fuzzBits(s, p)

인수(Arguments)

  • s — 비트 퍼징(bit fuzzing)을 수행할 String 또는 FixedString String 또는 FixedString
  • p — 각 비트를 뒤집을 확률로, 0.0 이상 1.0 이하의 값입니다. Float*

반환 값(Returned value)

s와 동일한 타입의 퍼징된 문자열을 반환합니다. String 또는 FixedString

예시(Examples)

사용 예시(Usage example)

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

rand

도입된 버전: v1.1.0

균등 분포를 갖는 무작위 UInt32 값을 반환합니다.

시스템에서 얻은 초기 상태를 사용하는 선형 합동 생성기(linear congruential generator)를 사용하므로, 겉보기에는 무작위로 보이지만 실제로는 완전한 난수가 아니며 초기 상태를 알 경우 예측 가능할 수 있습니다. 진정한 난수가 중요한 시나리오에서는 시스템 수준 호출을 사용하거나 외부 라이브러리와 연동하는 등의 대안을 사용하는 것이 좋습니다.

구문

rand([x])

별칭: rand32

인수

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

반환 값

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

예시

사용 예시

SELECT rand();
1569354847

rand64

도입 버전: v1.1.0

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

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

구문

rand64([x])

인자

반환 값

균등 분포를 따르는 임의의 UInt64 정수를 반환합니다. UInt64

예시

사용 예시

SELECT rand64();
15030268859237645412

randBernoulli

도입 버전: v22.10.0

베르누이 분포에서 추출된 임의의 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.0

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

구문

randBinomial(experiments, probability[, x])

인자

  • experiments — 실험 횟수. UInt64
  • probability — 각 실험에서의 성공 확률로, 01 사이의 값입니다. 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

0(포함) 이상 1(제외) 미만 구간에서 균등 분포를 따르는 무작위 Float64 값을 반환합니다.

구문

randCanonical([x])

인자

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

반환 값

랜덤한 Float64 값을 반환합니다. Float64

예시

사용 예시

SELECT randCanonical();
0.345217890123456

randChiSquared

도입 버전: v22.10.0

카이제곱 분포에서 추출한 난수 Float64 값을 반환합니다.

구문

randChiSquared(degree_of_freedom[, x])

인자

  • degree_of_freedom — 자유도(degrees 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.0

현재 쿼리 실행에서 모든 행에 대해 동일하게 유지되는 단일 난수 값을 생성합니다.

이 함수는 다음과 같은 특징이 있습니다:

  • 하나의 쿼리 내에서 모든 행에 대해 동일한 난수 값을 반환합니다.
  • 서로 다른 쿼리 실행 간에는 서로 다른 값을 생성합니다.

데이터 세트의 모든 행에 일관된 난수 시드나 식별자를 적용할 때 유용합니다.

구문

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.0

지수 분포에서 추출한 Float64 형식의 난수를 반환합니다.

구문

randExponential(lambda[, x])

인자

  • lambda — 분포의 rate 매개변수(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.0

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.0

로그 정규 분포에서 추출한 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.0

음이항 분포에서 추출한 임의의 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.0

정규 분포를 따르는 임의의 Float64 값을 반환합니다.

구문

randNormal(mean, stddev[, x])

인수

반환 값

지정된 정규 분포에서 추출된 임의의 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.0

푸아송 분포(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.0

스튜던트 t-분포(Student's t-distribution)에서 추출한 무작위 Float64 값을 반환합니다.

구문

randStudentT(degree_of_freedom[, x])

인수

  • degree_of_freedom — 자유도(degrees of freedom). Float64
  • x — 선택적이며, 전달되어도 사용되지 않습니다. 이 인수의 유일한 목적은 동일한 함수 호출이 쿼리에서 여러 번 사용될 때 공통 부분식 제거를 방지하는 것입니다. 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.0

구간 [min,max][\min, \max]에서 균등 분포로부터 추출한 Float64 난수를 반환합니다.

구문

randUniform(min, max[, x])

인수

  • min — 범위의 왼쪽 경계값(포함). Float64
  • max — 범위의 오른쪽 경계값(포함). Float64
  • x — 선택적 인수이며, 값은 사용되지 않습니다. 이 인수의 유일한 목적은 동일한 함수 호출이 쿼리에서 여러 번 사용될 때 common subexpression elimination을 방지하는 것입니다. 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.0

지정한 문자 수 길이의 고정 크기 임의 문자열을 생성합니다. 반환되는 문자는 반드시 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.0

지정된 문자 개수로 구성된 임의의 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.0

지정한 길이(문자 수)의 임의 문자열을 생성합니다. 반환되는 문자는 반드시 ASCII 문자일 필요는 없으므로, 인쇄 가능한 문자에만 한정되지 않습니다.

구문

randomString(length[, x])

인자

  • length — 문자열의 길이(바이트 단위). (U)Int*
  • x — 선택적인 인자로, 값은 사용되지 않습니다. 이 인자의 유일한 목적은 동일한 함수 호출이 하나의 쿼리에서 여러 번 사용될 때 공통 부분식 제거를 방지하는 것입니다. Any

반환 값

무작위 바이트로 채워진 문자열을 반환합니다. String

예제

사용 예제

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

randomStringUTF8

도입 버전: v20.5.0

지정한 개수의 코드 포인트로 이루어진 무작위 UTF-8 문자열을 생성합니다. 할당되지 않은 평면(평면 4부터 13까지)의 코드 포인트는 반환되지 않습니다. ClickHouse 서버와 통신하는 클라이언트가 생성된 UTF-8 문자열을 올바르게 표시하지 못할 수 있습니다.

구문

randomStringUTF8(length)

인수

  • length — 문자열의 코드 포인트 길이. (U)Int*

반환 값

임의의 UTF-8 코드 포인트로 채워진 문자열을 반환합니다. String

예시

사용 예시

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