엑셀 랜덤함수의 종류와 랜덤함수의 사용방법에 대해 살펴보겠습니다.
그리고 랜덤함수를 사용해서 1의 단위 랜덤숫자를 추출하는 방법뿐만 아니라, 10의 단위 랜덤숫자, 100의 단위 랜덤숫자를 추출하는 방법, 랜덤 소수점 숫자 추출하는 방법에 대해서도 알아보겠습니다.

 

이 글에서 설명드리는 내용은 엑셀에서 랜덤함수를 사용하는 방법이 주가 되지만, 큰 틀에서 보면 엑셀 뿐만 아니라, C, C++, C#, Java, Visual Basic 등의 프로그래밍 언어를 이용해서 랜덤숫자를 만드는 방법과도 동일합니다.

프로그래밍 언어를 공부하시는 분이라면 본 글에서 설명드리는 랜덤함수 공식을 이해하시고, 외워 두시는 것도 좋지 않을까 생각합니다.

 

본 글에서는 랜덤함수 중 일반적인 형태인 RAND 함수 사용 방법을 우선 설명 드리고, 아래쪽에서 RANDBETWEEN 함수를 사용하는 방법에 대해 설명 드리도록 하겠습니다.


당장 랜덤함수를 이용해서 랜덤 숫자를 추출하고자 하신다면 맨 아래쪽의 RANDBETWEEN 함수를 사용한 방법을 우선 사용하시고, 시간 되실 때 랜덤함수를 구하는 원리 및 공식도 읽어보시기 바랍니다.

 

엑셀 랜덤함수의 종류

 

엑셀에서 사용하는 랜덤함수로는 RAND함수와 RANDBETWEEN가 있습니다.
하지만 대부분의 경우 랜덤함수 독자적으로 사용되기 보다는 절사함수인 INT 함수나 ROUNDDOWN 함수, TRUNC 함수와 함께 사용하는게 일반적입니다.
이 글에서는 절사함수 중 INT 함수를 이용해서 랜덤숫자를 추출하는 방법에 대해 설명 드리겠습니다.

 

랜덤 숫자 추출 원리

 

엑셀에서 랜덤숫자를 추출하고자 합니다.
그런데 랜덤숫자란 무엇일까?


랜덤숫자를 우리말로 바꾸면 무작위 숫자 또는 임의의 숫자라는 뜻입니다.
랜덤은 Random으로 “무작위” 또는 “임의의”의 뜻을 가지고 있습니다.

 

그렇다면 엑셀을 비롯해서 컴퓨터는 랜덤 숫자를 어떻게 만들어낼까?
사람에게 1부터 100까지의 숫자 중 하나를 생각하라고 한다면 어떤 숫자가 나올지 알 수가 없습니다.
사람에 따라서도 다르고, 그 때 그 때 상황에 따라서도 다른 숫자를 얘기하게 되지요.

 

그러면 컴퓨터는 어떻게 랜덤숫자를 만들어낼까?
컴퓨터에는 수학에서 사용하는 난수표라는 것이 입력되어 있습니다.
쉽게 말하면 랜덤 숫자라고는 말하지만 엄밀히 따지면 이미 작성해 놓은 랜덤 숫자표, 즉 난수표의 값을 순서대로 보내주고 있는 것이지요.
하지만 난수표 숫자의 개수가 상당히 많은데다가 임의의 장소에서부터 시작하기 때문에 매번 다른 숫자를 내보내는 것처럼 보이는 것이지요.

 

 

RAND 함수를 사용한 랜덤숫자 추출 방법

 

엑셀을 비롯한 프로그래밍 언어에서 랜덤함수를 사용할 경우 출력되는 숫자의 범위는 0에서 1 사이의 숫자입니다.


대충 생각한다면 위의 설명으로도 충분하지만 엄밀히 따지면 좀 더 상세한 설명이 필요합니다.


위의 그림처럼 엑셀에서 RAND 함수의 인수 설명을 보면 다음과 같습니다.


“0보다 크거나 같고 1보다 작은, 균등하게 분포된 난수를 구합니다.”

 

난수를 구할 때 나올 수 있는 가장 작은 수는 0 입니다.
난수에서 나올 수 있는 가장 큰 수는 1 이 아니라, 1보다 작은 수입니다.
즉 0.999999... 가 되는 것이지요.


그렇기 때문에 난수로 나올 수 있는 숫자의 범위는 0 ~ 0.9999이며, 수식으로 설명한다면 다음과 같습니다.

0 ≦ 랜덤 숫자 < 1

 

우선 엑셀에서 랜덤함수인 RAND() 함수를 사용해서 랜덤 숫자를 구해 보도록 하겠습니다.

 

 

위의 그림처럼 A1 셀에 =RAND() 라고 입력하겠습니다.


본 글에서는 함수마법사의 사용방법은 모두 아실 것이라 생각하고, 간단하게 수식으로만 설명 드리겠습니다.


RAND() 함수를 사용해서 랜덤숫자를 구했더니 0.675224 라는 숫자가 나왔네요.
저의 컴퓨터에서는 위의 숫자가 나왔지만 여러분의 경우는 다른 숫자가 나올 것입니다.


해당 셀이 들어 있는 열의 너비를 넓히면 소수점 이하 숫자를 더 길게 볼 수 있습니다.
저의 경우 0.675224234라고 나오네요.


또 다른 랜덤 숫자를 보고자 할 경우 아래의 방법 중 하나를 이용할 수 있습니다.
1. F9키를 누른다.
2. 아무 셀이나 마우스로 더블클릭 후 엔터를 입력하거나 다른 셀을 클릭한다.
3. F2키를 눌러서 셀 편집상태로 갔다가 엔터를 누른다.


지금은 랜덤숫자를 테스트하는 것이 목적이므로 수동계산 단축키인 F9키를 사용하는 것으로 설명하도록 하겠습니다.
F9키를 누를 때마다 매번 다른 숫자가 나오게 됩니다.


여기에서 나올 수 있는 숫자의 범위는 0 ~ 0.999999 이지만, 실제적으로 0을 보는 일은 로또에 당첨될 확률보다도 높지 않을까 싶네요.

 

 

위의 그림을 기준으로 랜덤숫자를 구하는 방법에 대해 설명 드리겠습니다.


위의 그림에서는 총 4가지의 예를 들어서 랜덤숫자를 구하고 있습니다.
첫 번째는 1부터 3까지의 숫자 중 하나를 구하는 것이고, 두 번째는 주사위의 숫자처럼 1부터 6까지의 숫자 중 하나를 구하는 것이며, 세 번째와 네 번째는 50부터 60, 100부터 200까지의 숫자 중 하나를 구하는 것입니다.


이해를 돕기 위해서 C열에는 랜덤숫자가 총 몇 가지가 나올 수 있는지 개수를 구해 놓았습니다.


개수를 구할 때는 끝 숫자 - 시작 숫자를 구한 다음 1을 더해 주어야 됩니다.
예를 들어서 1부터 3까지의 경우 1, 2, 3으로 총 3가지이지만, 3-1은 2가 되므로 여기에 1을 더해 주어야 합니다.


D4셀의 수식을 보겠습니다.
수식은 F4셀을 참조하시기 바랍니다.

=INT(RAND()*C4)+A4


위의 수식을 풀어서 쓰면 다음과 같습니다.


=INT(RAND()*개수)+시작 숫자


위의 수식에서 사용되는 INT 함수는 정수라는 뜻의 Integer 라는 단어에서 따 온 함수로 소수점 이하를 절사하는 함수입니다.

예를 들어서 =INT(RAND())라는 수식에 랜덤함수를 이용해 나온 숫자가 0.675224인 경우 소수점 이하를 절사하므로 0이 되겠지요.
우리가 원하는 값은 0이 아니므로 랜덤숫자에 우리가 구하고자 하는 숫자의 개수를 곱해줍니다.


예를 들어서 개수가 3인 경우에 RAND 함수를 통해 나올 수 있는 숫자의 범위는 0부터 0.9999...까지입니다.


이 숫자에 개수 3을 곱하게 되면 숫자의 범위는 0부터 2.9999...까지입니다.


여기에 INT 함수를 사용하여 소수점을 제거하게 되면 01, 2가 나오게 됩니다.
총 3가지의 숫자가 나오네요.


하지만 우리가 원하는 숫자는 1, 2, 3입니다.


즉 숫자의 개수는 맞지만, 시작 숫자가 다르네요.
그래서 위의 수식 끝 부분에 있는 것처럼 시작 숫자를 더해 주면 되는 것입니다.


랜덤함수를 사용할 때 특히 괄호에 주의하시기 바랍니다.
괄호의 위치가 달라지면 결과도 달라지니까요.


정리해 보면

=INT(RAND()*개수)+시작 숫자

라는 공식을 이용하면 원하는 랜덤숫자를 구할 수 있다는 것입니다.


지금까지도 참 복잡한 수식으로 왔는데 조금 더 복잡하게 들어가 보겠습니다.


저의 경우 이해를 돕기 위해 개수를 별도의 셀에 계산해 두었지만, 일반적으로는 수식에서 개수까지 구하게 됩니다.


그래서 개수를 구하는 수식을 포함해서 수식을 다시 만들어 보겠습니다.


개수 = 끝 숫자-시작 숫자+1입니다.


위의 수식에 개수 부분을 대입해 보면 다음과 같습니다.


=INT(RAND()*(끝 숫자-시작 숫자+1))+시작 숫자


덧셈과 곱셈의 계산 순서가 바뀌면 안 되므로 개수 부분을 괄호로 구분해 주어야 합니다.


위의 수식을 이용해서 1부터 3까지의 숫자 중 랜덤 숫자를 추출하게 된다면
=INT(RAND()*(3-1+1))+1
이 되겠네요.

 

 

 

위의 수식 중 INT 함수는 소수점 이하를 제거하는 절사함수입니다.


그런데 여기에 반올림 함수인 ROUND 함수를 사용하면 어떻게 될까요?
결과는 비슷해 보이지만, 실제로 나올 수 있는 숫자의 범위 및 비율이 달라집니다.


상세한 설명을 드릴 경우 설명이 너무 길어질 것 같아서 그림으로만 대체하도록 하겠습니다.
랜덤함수를 사용해서 랜덤숫자를 추출하실 때는 반드시 반올림 함수가 아닌 절사함수를 사용하시기 바랍니다.

 


랜덤함수 공식

 

지금까지 다소 복잡하게 왔는데요.


정리해 보면 2가지 공식으로 정리할 수 있습니다.


=INT(RAND()*숫자 개수)+시작 숫자
=INT(RAND()*(끝 숫자-시작 숫자+1))+시작 숫자


위의 공식 중 위쪽은 숫자의 개수를 별도의 셀에서 계산할 경우이고, 아래의 공식은 숫자의 개수까지 모두 구하는 공식으로 2개의 공식은 같은 공식입니다.


위의 공식은 엑셀 뿐만 아니라, 프로그래밍 언어를 사용해서 랜덤 숫자를 추출할 때도 적용되는 공식입니다.
위의 공식에 내가 구하고자 하는 랜덤숫자의 시작 숫자와 끝 숫자만 넣어주면 1의 단위 랜덤 숫자는 얼마든지 구할 수 있답니다.

 

상세하게 설명하려다 보니 랜덤숫자 구하는 4가지의 예제 중 첫 번째만 설명 드리다가 여기까지 왔네요.
하지만 2번째부터 4번째까지도 같은 개념이므로 부연설명 없이 다음 단계로 넘어가도록 하겠습니다.

 

 

RAND 함수를 활용한 10단위 랜덤 숫자 만들기

 

지금까지는 가장 일반적인 랜덤 숫자 추출 방법에 대해 살펴봤습니다.


이번에는 10, 20, 30처럼 10 간격의 랜덤숫자를 추출하는 방법에 대해 설명드리겠습니다.


위에서 랜덤함수 사용방법에 대해 충분히 설명 드렸으므로 이미지를 참고하시면 충분하리라 생각되어 상세한 설명은 생략하도록 하겠습니다.
위에서 설명 드린 부분과 차이가 있다면 숫자의 개수를 구하는 부분이 조금 복잡해졌다고 할 수 있겠네요.

 

개수 수식 =(B4-A4)/10+1
랜덤 숫자 수식 =INT(RAND()*C4)*10+A4

 

 

RAND 함수를 활용한 100단위 랜덤 숫자 만들기

 

위의 10단위 랜덤 숫자를 구하는 방식처럼 100단위 랜덤 숫자를 구할 때도 숫자의 개수를 구하는 부분과 RAND 함수를 통해 구한 랜덤 숫자에 절사를 한 후 곱하는 값에만 차이가 있답니다.

 

개수 수식 =(B4-A4)/100+1
랜덤 숫자 수식 =INT(RAND()*C4)*100+A4

 

 

RAND 함수를 활용한 0.1단위 랜덤 숫자 만들기

 

랜덤 숫자를 구할 때 소수점 랜덤 숫자를 추출하는 방법을 몰라서 고민하는 분들이 많으신 것 같더군요.
그래서 소수점 랜덤 숫자 추출방법도 만들어봤습니다.
위의 경우처럼 숫자의 개수 부분과 약간의 곱셈만 추가해 주면 쉽게 만들 수 있답니다.

 

개수 수식 =(B4-A4)/0.1+1
랜덤 숫자 수식 =INT(RAND()*C4)*0.1+A4

 

 

RAND 함수를 활용한 0.01단위 랜덤 숫자 만들기

 

소수점 랜덤 숫자 추출 방법 중 0.01 단위의 랜덤 숫자를 구하는 방법입니다.

 

개수 수식 =(B4-A4)/0.01+1
랜덤 숫자 수식 =INT(RAND()*C4)*0.01+A4

 

 

RANDBETWEEN 함수를 활용한 1단위 랜덤 숫자 만들기

 

엑셀에서 랜덤함수를 사용해 랜덤 숫자를 추출하는 방법으로 RAND 함수를 많이 사용합니다.


하지만 RAND 함수의 경우 사용방법이 복잡하고, 별도의 수식을 입력해야 하는 등 불편한 점이 많습니다.


반면 RANDBETWEEN 함수는 랜덤으로 추출하고자 하는 숫자의 시작 숫자와 끝 숫자만 입력해 주면 되므로 매우 쉽게 사용할 수 있는 함수입니다.

 

 

랜덤 숫자 수식 =RANDBETWEEN(A4,B4)

 

위의 수식에서도 알 수 있듯이 RANDBETWEEN 함수의 인수로 시작 숫자와 끝 숫자만 입력해 주면 된답니다.

 

 

RANDBETWEEN 함수를 활용한 10단위 랜덤 숫자 만들기

 

RANDBETWEEN 함수를 사용해서 10단위 랜덤 숫자 추출하는 방법을 수식으로 만들어봤습니다.
하지만 이 경우는 별로 사용하지는 않을 것 같네요.
이렇게 복잡하게 계산해야 한다면 RAND 함수를 사용하는 것이 낫지 않을까 싶네요.

 

개수 수식 =(B4-A4)/10+1
랜덤 숫자 수식 =RANDBETWEEN(0,C4)*10+A4

 

 

랜덤함수를 활용한 로또번호 자동생성기

 

랜덤함수인 RANDBETWEEN 함수를 사용하는 방법으로 무엇이 있을까를 생각하다가 로또번호 자동생성기를 만들어봤습니다.

 

하지만 지금까지도 설명이 너무 길다보니 스크롤 압박이 심할텐데 계속해서 설명 드리기가 부담스럽네요.
그래서 개략적인 설명과 파일을 첨부하는 것으로 상세한 설명은 대신할까 합니다.

 

A3 셀의 수식 =IF(COUNTIF($A$3:$A$8,A3)=1,A3,RANDBETWEEN(1,45))

 

참고로 IF 함수는 조건에 따라 다른 값을 계산하기 위해 사용한 것이고,

COUNTIF 함수는 중복되는 숫자가 있는지 체크하기 위해 사용한 것이랍니다.


로또 번호는 1부터 45까지의 숫자 중 6개의 숫자를 선택하는 것인데, 중복되는 숫자가 나와서는 안되기 때문에 조금 복잡한 과정을 거쳐야 하고, 수식도 다소 복잡하답니다.

 

◈ 사용방법
① 파일⇒옵션⇒수식⇒계산옵션⇒반복 계산 사용에 체크
② A3부터 E3까지 범위 지정
③ E3 셀의 우측하단 ╋ 를 더블클릭

 

랜덤함수를 활용한 로또번호 자동생성기.xlsx

 

 

+ Recent posts