랜덤 함수

랜덤 함수 (Random Number Functions)

무작위 숫자·문자열을 생성하는 함수들이에요. 다양한 확률 분포(정규, 균등, 포아송, 버뉼리, 카이제곱 등)에서 난수를 뽑을 수 있어요. 이 섹션의 모든 함수는 인자를 0개 또는 1개 받아요. 인자를 제공하면(있다면) 그 유일한 목적은 공통 부분식 제거를 막아, 같은 행 안에서 같은 랜덤 함수를 여러 번 호출해도 서로 다른 랜덤 값을 얻도록 하는 것이에요.

출처: 문서

본문

관련 콘텐츠

  • 가이드: ClickHouse에서 랜덤 데이터 생성하기
  • 블로그: ClickHouse에서 랜덤 데이터 생성하기

참고: 이 랜덤 숫자는 암호화 용도가 아닌 알고리즘으로 생성돼요.

참고: 아래 문서는 system.functions 시스템 테이블에서 생성된 것이에요.

fuzzBits

도입: v20.5.0

입력 문자열 s의 비트를 각 비트당 확률 p로 뒤집어요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

fuzzBits(s, p)

인자 (Arguments)

  • s — 비트 퍼징을 수행할 String 또는 FixedString. String 또는 FixedString
  • p — 각 비트를 뒤집을 확률, 0.01.0 사이의 숫자. Float*

반환 값 (Returned value)

fuzzed된 문자열로, s와 같은 타입. String 또는 FixedString

예시 (Examples)

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

rand

도입: v1.1.0

균등 분포의 랜덤 UInt32 숫자를 반환해요.

시스템에서 얻은 초기 상태로 시작하는 비암호화 의사 난수 생성기를 사용해요. 즉, 겉보기엔 무작위처럼 보여도 진짜 무작위는 아니며 초기 상태를 알면 예측할 수 있어요. 진짜 무작위성이 중요한 시나리오에서는 시스템 레벨 호출이나 외부 라이브러리 통합 같은 대안을 고려하세요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

rand([x])

별칭 (Aliases): rand32

인자 (Arguments)

  • x — 선택 사항이며 무시돼요. 이 인자의 유일한 목적은 쿼리에서 같은 함수 호출을 여러 번 쓸 때 공통 부분식 제거를 막는 것이에요. Any

반환 값 (Returned value)

UInt32 타입의 랜덤 숫자. UInt32

예시 (Examples)

SELECT rand();
1569354847

rand64

도입: v1.1.0

균등 분포의 랜덤 UInt64 숫자를 반환해요.

시스템에서 얻은 초기 상태로 시작하는 비암호화 의사 난수 생성기를 사용해요. 즉, 겉보기엔 무작위처럼 보여도 진짜 무작위는 아니며 초기 상태를 알면 예측할 수 있어요. 진짜 무작위성이 중요한 시나리오에서는 시스템 레벨 호출이나 외부 라이브러리 통합 같은 대안을 고려하세요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

rand64([x])

인자 (Arguments)

  • x — 선택 사항이며 무시돼요. 이 인자의 유일한 목적은 쿼리에서 같은 함수 호출을 여러 번 쓸 때 공통 부분식 제거를 막는 것이에요. Any

반환 값 (Returned value)

균등 분포의 랜덤 UInt64 숫자. UInt64

예시 (Examples)

SELECT rand64();
15030268859237645412

randBernoulli

도입: v22.10.0

버뉼리 분포에서 추출한 랜덤 Float64 숫자를 반환해요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

randBernoulli(probability[, x])

인자 (Arguments)

  • probability — 성공 확률, 01 사이의 값. Float64
  • x — 선택 사항이며 무시돼요. 이 인자의 유일한 목적은 쿼리에서 같은 함수 호출을 여러 번 쓸 때 공통 부분식 제거를 막는 것이에요. Any

반환 값 (Returned value)

지정된 버뉼리 분포에서 추출한 랜덤 Float64 숫자. UInt64

예시 (Examples)

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

randBinomial

도입: v22.10.0

이항 분포에서 추출한 랜덤 Float64 숫자를 반환해요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

randBinomial(experiments, probability[, x])

인자 (Arguments)

  • experiments — 실험 횟수. UInt64
  • probability — 각 실험의 성공 확률, 01 사이의 값. Float64
  • x — 선택 사항이며 무시돼요. 이 인자의 유일한 목적은 쿼리에서 같은 함수 호출을 여러 번 쓸 때 공통 부분식 제거를 막는 것이에요. Any

반환 값 (Returned value)

지정된 이항 분포에서 추출한 랜덤 Float64 숫자. UInt64

예시 (Examples)

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

randCanonical

도입: v22.11.0

0(포함)과 1(제외) 사이에서 균등 분포의 랜덤 Float64 숫자를 반환해요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

randCanonical([x])

인자 (Arguments)

  • x — 선택 사항이며 무시돼요. 이 인자의 유일한 목적은 쿼리에서 같은 함수 호출을 여러 번 쓸 때 공통 부분식 제거를 막는 것이에요. Any

반환 값 (Returned value)

랜덤 Float64 숫자. Float64

예시 (Examples)

SELECT randCanonical();
0.345217890123456

randChiSquared

도입: v22.10.0

카이제곱 분포에서 추출한 랜덤 Float64 숫자를 반환해요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

randChiSquared(degree_of_freedom[, x])

인자 (Arguments)

  • degree_of_freedom — 자유도. Float64
  • x — 선택 사항이며 무시돼요. 이 인자의 유일한 목적은 쿼리에서 같은 함수 호출을 여러 번 쓸 때 공통 부분식 제거를 막는 것이에요. Any

반환 값 (Returned value)

지정된 카이제곱 분포에서 추출한 랜덤 Float64 숫자. Float64

예시 (Examples)

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

randConstant

도입: v1.1.0

현재 쿼리 실행의 모든 행에서 일정하게 유지되는 단일 랜덤 값을 생성해요.

이 함수는:

  • 단일 쿼리 안의 모든 행에 대해 같은 랜덤 값을 반환해요
  • 쿼리 실행마다 다른 값을 만들어요

데이터셋의 모든 행에 일관된 랜덤 시드나 식별자를 적용할 때 유용해요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

randConstant([x])

인자 (Arguments)

  • x — 선택 사항이며 무시돼요. 이 인자의 유일한 목적은 쿼리에서 같은 함수 호출을 여러 번 쓸 때 공통 부분식 제거를 막는 것이에요. Any

반환 값 (Returned value)

각 행에 같은 랜덤 값을 담은 UInt32 타입 컬럼. UInt32

예시 (Examples)

기본 사용

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

매개변수와 함께 사용

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

randExponential

도입: v22.10.0

지수 분포에서 추출한 랜덤 Float64 숫자를 반환해요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

randExponential(lambda[, x])

인자 (Arguments)

  • lambda — 분포의 비율(rate) 매개변수 또는 람다 값. Float64
  • x — 선택 사항이며 무시돼요. 이 인자의 유일한 목적은 쿼리에서 같은 함수 호출을 여러 번 쓸 때 공통 부분식 제거를 막는 것이에요. Any

반환 값 (Returned value)

지정된 지수 분포에서 추출한 랜덤 Float64 숫자. Float64

예시 (Examples)

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 숫자를 반환해요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

randFisherF(d1, d2[, x])

인자 (Arguments)

  • d1X = (S1 / d1) / (S2 / d2)에서 d1 자유도. Float64
  • d2X = (S1 / d1) / (S2 / d2)에서 d2 자유도. Float64
  • x — 선택 사항이며 무시돼요. 이 인자의 유일한 목적은 쿼리에서 같은 함수 호출을 여러 번 쓸 때 공통 부분식 제거를 막는 것이에요. Any

반환 값 (Returned value)

지정된 F-분포에서 추출한 랜덤 Float64 숫자. Float64

예시 (Examples)

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 숫자를 반환해요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

randLogNormal(mean, stddev[, x])

인자 (Arguments)

  • mean — 분포의 평균값. Float64
  • stddev — 분포의 표준편차. Float64
  • x — 선택 사항이며 무시돼요. 이 인자의 유일한 목적은 쿼리에서 같은 함수 호출을 여러 번 쓸 때 공통 부분식 제거를 막는 것이에요. Any

반환 값 (Returned value)

지정된 로그정규 분포에서 추출한 랜덤 Float64 숫자. Float64

예시 (Examples)

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 숫자를 반환해요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

randNegativeBinomial(experiments, probability[, x])

인자 (Arguments)

  • experiments — 실험 횟수. UInt64
  • probability — 각 실험에서 실패할 확률, 01 사이의 값. Float64
  • x — 선택 사항이며 무시돼요. 이 인자의 유일한 목적은 쿼리에서 같은 함수 호출을 여러 번 쓸 때 공통 부분식 제거를 막는 것이에요. Any

반환 값 (Returned value)

지정된 음이항 분포에서 추출한 랜덤 Float64 숫자. UInt64

예시 (Examples)

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

randNormal

도입: v22.10.0

정규 분포에서 추출한 랜덤 Float64 숫자를 반환해요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

randNormal(mean, stddev[, x])

인자 (Arguments)

  • mean — 분포의 평균값. Float64
  • stddev — 분포의 표준편차. Float64
  • x — 선택 사항이며 무시돼요. 이 인자의 유일한 목적은 쿼리에서 같은 함수 호출을 여러 번 쓸 때 공통 부분식 제거를 막는 것이에요. Any

반환 값 (Returned value)

지정된 정규 분포에서 추출한 랜덤 Float64 숫자. Float64

예시 (Examples)

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

randPoisson

도입: v22.10.0

포아송 분포에서 추출한 랜덤 Float64 숫자를 반환해요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

randPoisson(n[, x])

인자 (Arguments)

  • n — 발생 횟수의 평균. UInt64
  • x — 선택 사항이며 무시돼요. 이 인자의 유일한 목적은 쿼리에서 같은 함수 호출을 여러 번 쓸 때 공통 부분식 제거를 막는 것이에요. Any

반환 값 (Returned value)

지정된 포아송 분포에서 추출한 랜덤 Float64 숫자. UInt64

예시 (Examples)

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

randStudentT

도입: v22.10.0

스튜던트 t-분포에서 추출한 랜덤 Float64 숫자를 반환해요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

randStudentT(degree_of_freedom[, x])

인자 (Arguments)

  • degree_of_freedom — 자유도. Float64
  • x — 선택 사항이며 무시돼요. 이 인자의 유일한 목적은 쿼리에서 같은 함수 호출을 여러 번 쓸 때 공통 부분식 제거를 막는 것이에요. Any

반환 값 (Returned value)

지정된 스튜던트 t-분포에서 추출한 랜덤 Float64 숫자. Float64

예시 (Examples)

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

randUniform

도입: v22.10.0

구간 에서 균등하게 추출한 랜덤 Float64 숫자를 반환해요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

randUniform(min, max[, x])

인자 (Arguments)

  • min — 범위의 왼쪽 경계(포함). Float64
  • max — 범위의 오른쪽 경계(포함). Float64
  • x — 선택 사항이며 무시돼요. 이 인자의 유일한 목적은 쿼리에서 같은 함수 호출을 여러 번 쓸 때 공통 부분식 제거를 막는 것이에요. Any

반환 값 (Returned value)

minmax로 형성된 구간에서 균등하게 추출한 랜덤 숫자. Float64

예시 (Examples)

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 문자는 아니에요. 즉 인쇄 가능하지 않을 수 있어요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

randomFixedString(length)

인자 (Arguments)

  • length — 문자열의 바이트 길이. UInt*

반환 값 (Returned value)

랜덤 바이트로 채워진 문자열. FixedString

예시 (Examples)

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

randomPrintableASCII

도입: v20.1.0

지정된 문자 수를 가진 랜덤 ASCII 문자열을 생성해요.

length < 0을 넘기면 함수 동작은 정의되지 않아요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

randomPrintableASCII(length[, x])

인자 (Arguments)

  • length — 문자열의 바이트 길이. (U)Int*
  • x — 선택 사항이며 무시돼요. 이 인자의 유일한 목적은 쿼리에서 같은 함수 호출을 여러 번 쓸 때 공통 부분식 제거를 막는 것이에요. Any

반환 값 (Returned value)

랜덤한 ASCII 인쇄 가능 문자 집합으로 이뤄진 문자열. String

예시 (Examples)

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 문자는 아니에요. 즉 인쇄 가능하지 않을 수 있어요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

randomString(length[, x])

인자 (Arguments)

  • length — 문자열의 바이트 길이. (U)Int*
  • x — 선택 사항이며 무시돼요. 이 인자의 유일한 목적은 쿼리에서 같은 함수 호출을 여러 번 쓸 때 공통 부분식 제거를 막는 것이에요. Any

반환 값 (Returned value)

랜덤 바이트로 채워진 문자열. String

예시 (Examples)

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

randomStringUTF8

도입: v20.5.0

지정된 코드포인트 수를 가진 랜덤 UTF-8 문자열을 생성해요. 할당되지 않은 평면(planes)(평면 4~13)의 코드포인트는 반환되지 않아요. ClickHouse 서버와 통신하는 클라이언트가 생성된 UTF-8 문자열을 올바르게 표시하지 못할 수도 있어요.

참고: 이 함수는 비결정적이에요. 같은 인자에 대해 다른 결과를 반환할 수 있어요.

구문 (Syntax)

randomStringUTF8(length)

인자 (Arguments)

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

반환 값 (Returned value)

랜덤 UTF-8 코드포인트로 채워진 문자열. String

예시 (Examples)

SELECT randomStringUTF8(13)
┌─randomStringUTF8(13)─┐
│ 󶡕𲉗𩍄ԍ╃𑄅󦨁󷌁󬾣𹼫󤓆󺜘󩶧         │
└──────────────────────┘

더 알아보기 (Learn more)