RAND( ) 함수에 정수 인자를 전달하면 해당 값이 난수 생성기의 시드(seed)로 사용됩니다. 핵심은 같은 값으로 시드를 설정할 때마다 RAND( )가 항상 동일한 순서의 난수 시퀀스를 반환한다는 점입니다.
즉, 프로그램을 여러 번 실행하거나 쿼리를 반복해도 시드 값만 동일하다면 완전히 똑같은 난수 결과를 얻을 수 있습니다. 이는 테스트 데이터 생성이나 재현 가능한 무작위 샘플링이 필요할 때 매우 유용합니다.
예제
아래 예제에서는 세 개의 RAND( ) 호출에 모두 동일한 시드 값 1을 전달했습니다. 그 결과 세 함수 모두 정확히 같은 값을 반환하는 것을 확인할 수 있습니다.
mysql> Select RAND(1), RAND(1), Rand(1); +---------------------+---------------------+---------------------+ | RAND(1) | RAND(1) | Rand(1) | +---------------------+---------------------+---------------------+ | 0.40540353712197724 | 0.40540353712197724 | 0.40540353712197724 | +---------------------+---------------------+---------------------+ 1 row in set (0.00 sec)
참고 사항
- 시드 인자 없이 RAND( )를 호출하면 매번 다른 난수가 생성됩니다.
- 동일한 시드 값이라도 MySQL 버전에 따라 내부 알고리즘이 달라질 수 있으므로, 버전 간 호환성이 중요한 경우 주의해야 합니다.