확률과 통계 내가 직접 만들어 보는 확률과 통계

난수생성 Randomize

실생활의 여러가지 상황 중에서 컴퓨터의 도움을 받아야하는 대표적인 경우가 난수를 생성하는 것입니다.
학교에서 주사위를 던지는 것이 대표적인 난수 생성일텐데, 주사위를 몇번 던지는 것은 가능해도 이를 몇백번 몇 천번 던지는 것은 불가능할 뿐만 아니라 할 필요가 없습니다.

사진안떠요!

VBA를 활용하면 이러한 상황을 쉽게 만들수 있고 결과를 시뮬레이션해볼 수 있습니다. 여기에서는 난수를 생성하는 방법에 대해 알아보겠습니다.

난수를 생성하기 위한 기본코드는 아래와 같습니다.

Randomize
Range("a1")= Rnd

위의 구문은 a1에 난수를 생성하는 코드입니다. 이때 난수는 $[0,1)$ 에서 발생합니다. 이를 잘 이용하면 원하는 범위의 정수를 생성할 수 있습니다.
이를 위해서는 Int 구문을 적절히 이용하면 됩니다. Int 는 가우스 함수$[~]$ 와 같습니다. 즉, 그 수보다 크지 않은 최대의 정수를 만들어냅니다.
따라서 2이상 6이하의 정수를 임의로 선택하고 싶으면 Range("a1")= Int(Rnd)*4+1을 실행하면 됩니다.

실험파일(Click)

위의 파일을 열어서 alt+F11을 눌러 편집기를 여세요. 그리고 각 프로시저 안에서 F5를 누르면 아래와 같이 출력됨을 알 수 있습니다.

사진안떠요!

  • 랜덤수는 a1에 $[0,~1)$ 사이의 난수를 발생시킵니다. 실행시킬 때마다 새로운 수가 기록됩니다.
  • 랜덤정수는 a2에 1이상 3이하의 정수를 발생시킵니다.
  • 랜덤숫자나열은 a3부터 두 줄에 하나씩 1이상 6이하의 정수를 발생시킵니다.
  • For문에 Step 2를 붙이면 i가 2씩 커집니다.

직접해보기

다음 파일을 실행시켜보세요.

실험파일(Click)

던진횟수를 설정하고 던지기를 클릭하면 1에서 6까지의 정수가 기록되고 그 평균도 b2에 기록 됩니다. 코드를 보고 다음을 수행해보세요.
  1. E열의 동일한 위치에 1이상 6이하의 정수를 발생시키는 코드를 작성해보세요.
  2. 두열의 주사위의 합의 평균을 F열에 기록하는 코드를 작성해보세요.
  3. 주사위합의 평균의 평균을 c2에 기록하는 코드를 작성해보세요.