UNIFORM

UNIFORM

포함 범위 [min, max] 안에서 균등 분포(uniformly-distributed)의 의사 난수(pseudo-random) 숫자를 생성해요.

출처: Snowflake SQL Reference - UNIFORM

본문

구문

UNIFORM( min , max , gen )

인자

min 생성할 숫자의 최소값(포함)을 지정하는 상수예요.

max 생성할 숫자의 최대값(포함)을 지정하는 상수예요.

gen 균등 난수의 원시 소스 역할을 하는 표현식으로, 일반적으로 RANDOM 함수예요. 자세한 내용은 Data Generation Functions Usage notes를 참고하세요.

반환 값

min 또는 max 중 하나라도 부동소수점 숫자이면 UNIFORM은 부동소수점 숫자를 반환해요. min과 max 둘 다 정수이면 UNIFORM은 정수를 반환해요.

사용 시 유의사항

이 함수는 RANDOM 함수와 관련이 있지만 다르기도 해요. 두 함수 모두 균등 분포를 생성하지만 반환되는 값의 범위에는 차이가 있어요.

  • RANDOM은 의사 난수 64비트 정수를 생성해요. 시퀀스를 반복할 수 있게 해주는 선택적 시드(seed)를 받아들여요.
  • UNIFORM은 지정된 범위의 무작위 정수 또는 부동소수점 숫자를 생성해요.

예시

다음 예시들은 UNIFORM 함수를 사용하는 방법을 보여줘요. 아래 출력에 표시된 값은 직접 이 예시를 실행할 때 반환되는 값과 다를 수 있어요.

이 예시는 1부터 10까지(포함) 범위에서 무작위 정수 5개를 생성해요:

SELECT UNIFORM(1, 10, RANDOM()) FROM TABLE(GENERATOR(ROWCOUNT = 5));
+--------------------------+
| UNIFORM(1, 10, RANDOM()) |
|--------------------------|
|                        6 |
|                        1 |
|                        8 |
|                        5 |
|                        6 |
+--------------------------+

이 예시는 0부터 1까지(포함) 범위에서 부동소수점 숫자 5개를 생성해요:

SELECT UNIFORM(0::FLOAT, 1::FLOAT, RANDOM()) FROM TABLE(GENERATOR(ROWCOUNT = 5));
+---------------------------------------+
| UNIFORM(0::FLOAT, 1::FLOAT, RANDOM()) |
|---------------------------------------|
|                         0.1180758313  |
|                         0.4945805484  |
|                         0.7113092833  |
|                         0.06170806767 |
|                         0.01635235156 |
+---------------------------------------+

이 예시는 gen 인자가 상수이면 출력이 상수임을 보여줘요:

SELECT UNIFORM(1, 10, 1234) FROM TABLE(GENERATOR(ROWCOUNT = 5));
+----------------------+
| UNIFORM(1, 10, 1234) |
|----------------------|
|                    7 |
|                    7 |
|                    7 |
|                    7 |
|                    7 |
+----------------------+

더 알아보기 (Learn more)

  • RANDOM — 의사 난수 정수