728x90

프로그램을 하다보면 여러가지 경우에 랜덤한 수가 필요할 때가 많습니다.

대략적으로 살펴보면, 

  • 게임들에서 임의의 동작, 적들의 위치나 수를 결정하기
  • 암호화 알고리즘을 실행할 때
  • 시물레이션에서 조건을 설정할 때
  • 소프트웨어를 테스트 하기위해 임의의 경우를 설정할때

같은 것들이 있고 그외에도 다양한 이벤트에서 필요합니다.

엑셀에서는 그만큼은 아니지만 데이터를 다루는 만큼 임의의 수가 필요할 때가 있습니다.

 

 

1. RAND 함수로 난수 만들기

 

RAND() : 0 이상, 1 미만의 실수인 난수를 반환합니다. 

  • EXCEL2010부터는 Mersenne Twister 알고리즘을 사용합니다. 이 방법은 숫자가 유사하게 분포됩니다.
  • RAND 함수는 () 안에 인수를 입력하지 않고 숫자나 문자를 입력할 경우 에러가 발생합니다.
  • 수식을 갱신하는 이벤트가 발생하면 매번 갱신됩니다.

 

엑셀 계산옵션의 디폴트는 시트에 데이터가 입력되면 매번 함수를 다시 계산하게 되어 있습니다.

그래서 매번 시트를 입력할 때마다 수식이 갱신됩니다.

원하지 않으면 [엑셀 옵션] - [수식] - [계산옵션]에서 수동으로 계산하도록 해야 합니다.

 

계산옵션

 

그리고 수가 계속 변하는 것이 좋기도 하지만 만들어진 수를 저장하고 싶을 때가 있습니다.

이런 경우에 사용할 수 있는 방법이 몇가지 있습니다.

 

① 만들어진 수를 복사해서 "선택하여 붙여넣기"에서 "값만 붙여넣기"를 사용하면 됩니다.

 

값만 붙여넣기

 

② 혹은 RAND() 함수를 입력하고 ENTER를 치지 말고 F9로 입력하면 함수가 아닌 숫자가 생성됩니다.

이 상태에서 입력하면 함수가 아니고 숫자 형식으로 들어가기 때문에 더 이상 변경되지 않습니다.

 

F9로 함수 입력하기

 

 

2. 난수 범위 조정하기

 

RAND() 함수는 숫자를 0 ≤ rand < 1 의 범위에서 함수를 만듭니다.

보다 큰 수를 만들고 싶으면 rand 함수에 사칙연산을 하면 됩니다.

 

예를 들면

  • rand * 10 → 0 ≤ rand < 10의 범위에서 난수생성
  • rand * 2 - 1 → -1 ≤ rand < 1의 범위에서 난수생성
  • rand - 1 → -1 ≤ rand < 0의 범위에서 난수생성

rand 함수는 소수점 아래로 많이 만들기 때문에 ROUND 함수나 INT 함수와 함께 써야 합니다.

예) =int(rand() * 100) → 0 ~ 100까지의 자연수 중에 하나 생성하기

 

 

 

 

3. RANDBETWEEN 함수

 

RAND 함수를 사용해서 범위를 조정하는 것이 너무 자주 되니 다른 전용함수가 있습니다.

 

RANDBETWEEN(bottom, top) : 지정한 bottom과 top 사이에 임의의 난수를 형성합니다. 이 함수는 결과값이 정수로 반환되어 소수점이 없습니다.

  • bottom : 함수에서 반환하는 값의 하한치입니다.
  • top : 함수에서 반환하는 값의 상한치입니다.
  • 함수의 인수인 bottom과 top은 소수점이 있어도 되지만 결과는 정수만 반환됩니다. 그래서 RANDBETWEEN(0, 0.5)를 입력하면 항상 0을 반환합니다.

예) =RANDBETWEEN(-10,10) → -10에서 10 사이의 정수를 반환합니다.

 

엑셀의 랜덤함수는 큰 사이클에서 엄밀하게 보면 규칙성이 있다고 합니다.

그렇지만 일상적인 수준에서는 사용에 문제가 없고, 빠르고 사용이 쉽습니다.

 

 

 

 

 

 

 

 

반응형

+ Recent posts