MySQL에서 두 값 사이의 난수 생성하기
MySQL에서 두 값 사이의 임의의 값(난수)을 얻으려면 RAND() 함수와 FLOOR() 함수를 함께 사용하면 됩니다. 기본 문법은 다음과 같습니다.
select FLOOR( RAND() * (최댓값 - 최솟값) + 최솟값) as 별칭;
동작 원리
RAND()는 0 이상 1 미만의 실수를 반환하며, 여기에 원하는 범위의 크기를 곱하고 최솟값을 더한 뒤 FLOOR()로 소수점을 버리면 지정된 범위 내의 정수 난수가 생성됩니다.
예제: 100부터 200 사이의 난수 구하기
최댓값을 200, 최솟값을 100으로 설정해 보겠습니다. 이 경우 생성되는 난수는 100과 200 자신을 포함하여 그 사이의 값이 됩니다.
쿼리는 다음과 같습니다.
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
실행 결과는 다음과 같습니다.
+-------------+ | RandomValue | +-------------+ | 144 | +-------------+ 1 row in set (0.00 sec)
실행할 때마다 다른 결과 확인
같은 쿼리를 다시 실행하면 매번 다른 값이 출력됩니다.
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
앞서 설정한 범위 내에서 무작위로 값이 선택되기 때문에 아래와 같이 다른 결과가 나타납니다.
+-------------+ | RandomValue | +-------------+ | 184 | +-------------+ 1 row in set (0.00 sec)
정리
이처럼 FLOOR(RAND() * (최댓값 - 최솟값) + 최솟값)> 공식을 활용하면 MySQL에서 원하는 범위의 정수 난수를 간단하게 생성할 수 있습니다. 테스트 데이터 생성, 샘플링 등 다양한 상황에서 유용하게 활용할 수 있습니다.