PostgreSQL: 특정 범위의 랜덤 숫자 추출하는 방법
PGSQL에서 SELECT random(); 사용하면 0.0 <= x < 1.0 범위의 난수를 반환해주는데, random() 을 이용하여 특정 범위의 정수 값을 램덤하게 추출하는 방법을 소개합니다. random() 은 난수를 반환하기 때문에 trunc() 를 이용하여 정수로 바꾸고, generate_series() 를 이용하여 1백만번의 반복 실행으로 최소값과 최대값을 확인하여 지정한 범위대로 실행이되는지 확인해보겠습니다. 0 ~ 10 사이의 정수 trunc() 제거하면 0.0 <= x < 11.0 범위의 난수가 반환됩니다. -- 0 <= x < 10 범위의 정수
-- "SELECT trunc(random() * 11);" 1백만번의 실행 시 최소값과 최대값 확인하기
-- Query
SELECT min(random), max(random) FROM (
SELECT trunc(random() * 11) AS random FROM generate_series(1,1000000)
) AS test;
-- Result
min | max
-----+-----
0 | 10
1 ~ 10 사이의 정수 trunc() 제거하면 1.0 <= x < 11.0 범위의 난수가 반환됩니다. -- 1 <= x < 11 범위의 정수
-- "SELECT trunc(random() * 10 + 1);" 1백만번의 실행 시 최소값과 최대값 확인하기
-- Query
SELECT min(random), max(random) FROM (
SELECT trunc(random() * 10 + 1) AS random FROM generate_series(1,1000000)
) AS test;
-- Result
min | max
-----+-----
1 | 10
5 ~ 10 사이의 정수 trunc() 제거하면 5.0 <= x < 11.0 범위의 난수가 반환됩니다. -- 5 <…