본문 바로가기
컴퓨터 활용 팁/DataBase

MS-SQL 난수(랜덤) 함수 rand 제대로 알고 쓰자

by 대디동동 2023. 9. 13.
728x90

안녕하세요. 대디동동입니다.

 

MS-SQL은 Microsoft에서 개발한 Database를 말하는데,

이번 시간에는 MS-SQL에서 난수를 만드는 함수와 주의할 사항에 대해서 설명하겠습니다.

 

난수의 개념 및 Excel에서 사용하는 방법은 제 게시물을 참고해 주세요.

엑셀은 데이터 이전, 백업 등에 기본적을 사용되며,

협업 시에 많이 사용되기 때문에 사용법과 함수 등을 많이 알고 있으면 실무에 큰 도움이 됩니다.

 

특히, Microsoft 엑셀의 함수와 MS-SQL에서 사용하는 함수가 비슷하기도 하여

같이 알아두면 좋을 것 같아서 제 게시물에서 엑셀과 MS-SQL을 비교한 게시물을 많이 다룰 예정이니

참고하셔서 본인의 역량을 키우셨으면 합니다.

 

2023.09.12 - [컴퓨터 활용 팁/엑셀] - 엑셀 (Excel) 난수 만들 때 아직도 rand 만 쓰시나요?

 

엑셀 (Excel) 난수 만들 때 아직도 rand 만 쓰시나요?

안녕하세요. 대디동동입니다. 이번 시간에는 엑셀에서 난수 생성하는 방법을 설명하겠습니다. 난수란? (亂數, Random Number) 일정한 범위 내에서 무작위로 만들어진 수열을 말하는데, 여기서 무작

daddydongdong.tistory.com


난수(랜덤) 함수 사용

RAND([seed])

MS-SQL에서는 Excel과 같이 RAND() 함수를 사용합니다.

다만, Excel의 경우는 난수 함수의 종류도 많고 Parameter도 다양하게 입력할 수 있지만,

MS-SQL에서는 seed라는 선택형 옵션 Parameter만 존재합니다.

반환 값은 0 이상 1 미만의 의사 난수 float 값을 반환합니다.

 

여기서, 의사 난수(Pseudo Random Number)란? 

난수는 아니나 난수로 취급이 가능한 수열을 지칭하는데,

컴퓨터에서는 특별한 하드웨어 없이 완전한 난수를 만들 수 없는데,

컴퓨터는 우연에 의하는 선택을 할 수 없기에 기본적으로 정해진 입력에 따라 정해진 값을 낼 뿐이며,

특정한 방법으로 계산하거나 몇 밀리초(ms) 단위로 시시각각 변하는 값을 초기값 또는  여러 계산 과정을 거쳐 

사람이 볼 때에 마치 임의의 값인 것처럼 보이게 하는 것을 말합니다.

즉, 난수처럼 보이게 만드는 것이라고 생각하시면 될 것 같습니다.

 

인수 : seed

초기값을 제공하는 정수 식(tinyint, smallint 또는 int)이며,

초기값을 지정하지 않으면 시드 값을 임의로 할당합니다.

주의할 사항은 지정된 초기값에 대해 반환된 결과는 항상 동일합니다

 

반환형식 : float

0 이상 1 미만의 float 값을 반환합니다.

 

사용 예시 - seed 값에 따른 변화

--seed 없이 실행시 결과 값이 달라짐
SELECT RAND(), RAND(), RAND();
0.0333949252752102	0.157900089045205	0.59202992760256

SELECT RAND(), RAND(), RAND();
0.771477834860187	0.984871778007235	0.245485159740278

SELECT RAND(), RAND(), RAND();
0.141885494955324	0.370242525670352	0.799048406430742

--seed 임의 값 입력시 결과 값 동일함
SELECT RAND(100);
0.715436657367485

SELECT RAND(100);
0.715436657367485

--seed 임의 값 입력 후 seed 값 없이 실행시 값 동일함
SELECT RAND(100), RAND(), RAND();
0.715436657367485	0.28463380767982	0.0131039082850364

SELECT RAND(100), RAND(), RAND();
0.715436657367485	0.28463380767982	0.0131039082850364

SELECT RAND(100), RAND(), RAND();
0.715436657367485	0.28463380767982	0.0131039082850364

 

사용예시 - 범위 지정 (정수형 변환)

-- 몇 이상 몇 미만 공식
-- RAND() * (마지막값 - 시작값) + 시작값
--10이상 100미만 (10 <= 값 < 100 )
SELECT RAND()*(100-10)+10;
--최대 정수값 처리시
SELECT FLOOR(RAND()*(100-10)+10);

-- 몇 이상 몇 이하 공식
-- RAND() * (마지막값 - 시작값 + 1) + 시작값
--10이상 100이하 (10 <= 값 <= 100 )
SELECT RAND()*(100-10+1)+10;
--최대 정수값 처리시
SELECT FLOOR(RAND()*(100-10+1)+10);

이번 시간에는 MS-SQL  RAND() 함수를 통한 난수(랜덤)를 만드는 방법을 알아보았습니다.

주의할 점은 seed 값을 임으로 넣을 경우,  동일한 연결 내에서는 값이 변하지 않는 것만 기억하시면 됩니다.

다음 게시물도 초보(주니어) 개발자님들에게 도움을 드리는 내용을 가지고 오겠습니다.

 

반응형