Excel – 수식 : Rand 랜덤 데이터의 생성

안녕하세요, 채랑이 아빠 프리아입니다.

그냥 이전 글 쓸대 생각 난 김에 랜덤 수치를 만드는 것을 설명 드리겠습니다.

많은 분들이 알고 계시겠지만, 모르시는 분들도 있으니 그냥 참고만 하시면 되겠습니다.

일단 수식은 Rand이며, 사용하는 방법은 다음과 같습니다.

=RAND()

무언가 허무합니다. ㅎㅎㅎ
아무런 인수도 없이 그냥 RAND()가 명령어의 전부입니다. 저렇게 입력하시면 0~1 사이의 임의의 숫자가 적용됩니다.
그리고 다른 데이터를 손댈때마다 숫자가 변경됩니다.

자 그럼 설명 끝내겠습니다…. 라고 하면 웃기겠지요? ㅎㅎㅎ 그러고 싶은데….. 일단은 확장하여 사용하는 방법을 더 설명드리도록 하겠습니다.

Rand 명령어는 반드시 0~1사이의 숫자가 적용되게 되어 있습니다. 여기에는 0고 1은 포함되지 않습니다. 즉 0.00000000……1에서 0.999999999….. 의 데이터가 생성되는 것이지요.
여기서 문제는 흔히 우리는 1이하의 숫자를 랜덤으로 사용하는 경우는 극히 드뭅니다. 자연수 이상의 수치를 많이 사용하게 되죠.
그래서 여기에 일부 변형이 필요하게 됩니다.

방법은 그렇게 어렵지 않습니다.
만약 0~100 사이 숫자를 랜덤하게 만들고자 한다면 다음과 같이 사용합면 됩니다.

=RAND()*100

즉, 가장 큰 숫자를 곱하면 되는 것이죠. 다만 여기에 함정이 있다면, 절대 0과 100은 나타나지 않는 다는 것입니다. 네, 0과 1이 안나타나니 100을 곱해도 0과 100은 없습니다. 그리고 나타나는 결과는 소숫점 이하 무한으로 나오게 됩니다.(정말 무한은 아니에요 해보시면 아시겠지만 소숫점 이하 15자리 정도까지 나옵니다.)

만약 0에서 100사이의 자연수가 나오게 하고 싶다면 여기에 추가로 다른 수식을 사용해야 합니다.
가장 많이 사용하는 함수는 반올림을 나타내는 Round 함수 입니다.
Round함수의 사용 방법은 다음과 같습니다.

=ROUND(number, num_digits)

number은 숫자이며, num_digits는 소숫점 아래 몇자리까지 표시할지를 정하는 숫자입니다.
자연수를 끊는다면, num_digits는 0이 되며, 소숫점 아래 한자리는 1, 두자리는 2…. 이런식입니다.
물론 10의 자리이 이후를 끊고 싶다면 -1을 100의 자리에서 끊고 싶다면 -2….. 이런게 사용할 수도 있습니다.

위와 같이 결과가 나오게 됩니다.

자 그러면 0에서 100까지 랜덤 숫자를 만든다면 다음과 같이 사용하면 됩니다.

=ROUND(RAND()*100,0)

이렇게 입력을 하면 0과 100의 숫자도 나타나게 됩니다.
왜냐하면 0.1~0.4까지는 반올림하면 0이되고, 99.5~99.9까지는 반올림하면 100이 되니까요.

이렇게 응용을 하면 원하는 랜덤숫자를 생성할 수 있습니다.

다만 여기서 유의할 점이 하나 있습니다.
위와 같이 수식을 사용할 경우는 그냥 랜덤수치를 나타내기 위한 용도로만 적용가능하다는 겁니다.
무슨 말이냐… 동일한 확율을 나타내는 용도로는 사용할 수 없다는 말입니다.

예를 들면 주사위 게임의 수치를 랜덤화 한다고 해 보겠습니다.
주사위의 숫자는 1~6의 숫자를 사용하게 되겠죠.
정말 쉰게 생각한다면 다음과 같은 수식을 사용할 수 있습니다.

=ROUND(RAND()*5,0)+1

여기서 RAND()가 왜 5이고, 마지막에 1을 왜 더하냐고 물으시는 분이 있을 수 있겠죠.
만약 6을 곱한다면 0~6의 숫자가 발생하게 됩니다. 0, 1, 2, 3, 4, 5, 6 이 발생하게 되겠죠.
하지만 주사위에는 0이 없습니다. 따라서, 랜듬 수치는 0, 1, 2, 3, 4, 5를 만든다음, 1을 더해서 1, 2, 3, 4, 5, 6이 나오게 만들어야 하는 것입니다.

자 여기서 문제점이 무엇인지 아시는 분들도 있겠죠.(물론 모를 수도 있습니다.. 이과가 아니시라면 모를 수 있어요 ^^)
확률상으로 1, 6이 나올 확율이 다른 2~5가 나올 확률보다 낮다는 것입니다.
차근히 설명해 드리자면 다음과 같습니다.(설명을 위해서 소숫점 2자리까지만 설명드리겠습니다.)
1 : 1.00~1.49
2 : 1.50~2.49
3 : 2.50~3.49
4 : 3.50~4.49
5 : 4.50~5.49
6 : 5.50~5.99

즉, 소숫점 2자리 기준으로 했을 때, 2~5의 숫자는 나올확률이 100개라고 한다면, 1과 6의 경우에는 나올 확률이 50개 밖에 되지 않습니다. 다른 숫자에 비해서 나올 확율이 낮을 수 밖에 없는 거죠. 여기서 도박 사기가 발생합니다. ㅎㅎㅎㅎ

그래서, 이렇게 동일한 확률이 나와야 하는 경우에는 반올림 함수를 사용하시면 안됩니다.
이럴 경우에는 내림(Rounddown), 올림(Roundup), 정수화(Int), 버림(Trunc)의 수식을 사용해야 합니다.

Round, Rounddown, Roundup, Trunc, Int의 차이점이 궁금하신 분들은 아래에 연결된 글을 참조해 주세요. ^^

Excel – 수식 : Round, Roundup, Rounddown, Trunc, Int의 차이점

주사위를 생성하기 위해서는 다음 중 하나를 선택하시면 됩니다.

=ROUNDUP(RAND()*6,0)
=ROUNDDOWN(RAND()*6,0)+1
=TRUNC(RAND()*6,0)+1
=INT(RAND()*6)+1

Roundup의 경우 0보다 크고 1보다 작거나 같은 수는 1로 올려버립니다. 그래서 자연스럽게 동일한 비율을 가진 주사위가 됩니다. 마찬가지로, Rounddown, Trunc, Int의 경우 소수점 이하를 버리기 때문에 0~5의 숫자가 만들어지므로 +1을 해줘야 주사위를 완성할 수 있습니다.

그래서 랜덤화 수치를 구성할 때 동일한 발생확율을 만들고자 한다면 roundup, rounddown, trunc의 명령어를 쓰시고 간단하게 하려면 round의 명령어를 쓰시기 바랍니다. Int는 정수화된 랜덤수치를 만들때만 사용하셔야 합니다.

자 이번엔 간단한 글을 완료하였습니다.
(솔직히 간단하지 않음… 이글을 보시면 모르시겠지만, 저기 연결된 수식의 차이점 글을 여기에 다 쓰다가 글의 정체성이 흐트러져서 차이점 글을 중간에 하나 다시 쓰고 옮 ㅋㅋ)

오늘도 좋은 밤 되세요 ^^ 그럼 이만…

error: Content is protected !!