Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 같은 쿼리 내에 RAND() 함수를 여러 번 호출하면 매번 다른 난수가 생성될까?

MySQL의 RAND() 함수는 0과 1 사이의 임의의 부동 소수점 값을 반환합니다. 그렇다면 동일한 쿼리 안에서 RAND()를 시드(seed) 값 없이 두 번 이상 호출하면 어떻게 될까요? 정답은 호출할 때마다 서로 다른 난수가 생성된다는 것입니다.

예제로 확인하기

아래 예제는 하나의 SELECT 문에서 RAND() 함수를 세 번 호출한 결과입니다.

mysql> Select RAND(), RAND(), Rand();
+--------------------+-------------------+--------------------+
| RAND()             | RAND()            | Rand()             |
+--------------------+-------------------+--------------------+
| 0.9402844448949066 | 0.911499003797303 | 0.7366417150354402 |
+--------------------+-------------------+--------------------+
1 row in set (0.00 sec)

위 결과 집합을 보면 세 개의 열에 모두 서로 다른 값이 출력된 것을 확인할 수 있습니다. 즉, RAND() 함수는 같은 쿼리 내에서 몇 번을 호출하더라도 호출될 때마다 새로운 난수를 생성합니다.

시드(Seed) 값을 지정하면 어떻게 될까?

반면 RAND(N)처럼 특정 시드 값을 인자로 전달하면 상황이 달라집니다. 동일한 시드 값으로 호출하면 항상 같은 난수가 반환되므로, 재현 가능한(reproducible) 랜덤 값이 필요한 경우에 유용합니다. 시드를 생략하는 일반적인 RAND() 사용 시에만 매번 다른 값이 나오는 점을 기억해 두면 좋습니다.