다음을 통해 공유


RAND 사용

RAND 함수는 0부터 1까지의 부동 소수점 난수를 계산하며 계산할 난수의 시작점에 대한 tinyint, int 또는 smallint 값을 선택적으로 사용할 수 있습니다.

다음은 두 개의 난수를 계산하는 예입니다. 첫 번째 RAND() 함수를 사용하면 SQL Server에서 초기값을 선택할 수 있으며 두 번째 RAND() 함수는 시작 지점에 3 값을 사용합니다.

SELECT RAND(), RAND(3);

RAND 함수는 C 런타임 라이브러리 rand 함수와 비슷한 방법으로 사용되는 난수 발생기입니다. 초기값이 제공되지 않으면 시스템이 고유한 변수 초기값 숫자를 생성합니다. 초기값으로 RAND를 호출한 경우에는 변수 초기값을 사용하여 난수를 발생시켜야 합니다. 같은 초기값을 사용하여 RAND를 여러 번 호출하면 동일한 값이 반환됩니다. 다음 스크립트는 RAND 호출 시 동일한 초기값을 사용하므로 모두 같은 값을 반환합니다.

SELECT RAND(159784);
SELECT RAND(159784);
SELECT RAND(159784);

RAND를 사용하여 난수를 발생시킬 때는 일반적으로 GETDATE의 여러 부분을 추가하는 등 변수를 초기값으로 포함합니다.

SELECT RAND( (DATEPART(mm, GETDATE()) * 100000 )
           + (DATEPART(ss, GETDATE()) * 1000 )
           + DATEPART(ms, GETDATE()) );

GETDATE 기반의 알고리즘을 사용하여 초기값을 발생시킬 때 각 RAND 호출이 알고리즘에서 사용된 최소 날짜 부분 간격 내에서 이루어진 경우 RAND에서 중복되는 값을 생성할 수 있습니다. 이는 RAND 호출이 단일 일괄 처리 내에 포함된 것과 같습니다. 단일 일괄 처리에서 RAND에 대한 여러 호출은 동일한 밀리초 내에 실행될 수 있습니다. 이것은 DATEPART에 대한 가장 작은 증가값입니다. 이 경우 시간 이외의 부분을 기준으로 값을 통합하여 초기값을 생성합니다.