Excel 2007 및 Excel 2003의 RAND 함수에 대한 설명

기술 자료 번역 기술 자료 번역
기술 자료: 828795 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 Microsoft Office Excel 2007 및 Microsoft Office Excel 2003에서 난수를 생성하는 함수인 RAND에 사용된 알고리즘의 변경 내용에 대해 설명합니다.

추가 정보

이전 버전의 Excel에서는 RAND 함수에 의사 난수를 생성하는 알고리즘이 사용되었는데, 이 알고리즘은 무작위성 표준 테스트를 수행하는 데 적합하지 않았습니다. 이 문제는 대부분의 사용자에게는 적용되지 않고 RAND 함수를 매우 빈번하게, 예를 들어 백만 번 이상 호출하는 사용자에게만 해당하는 문제일 수 있습니다. 여기에 설명된 의사 난수 생성 알고리즘은 Excel 2003에서 처음으로 구현되었으며 일련의 동일한 표준 테스트를 통과했습니다.

이 테스트의 이름은 Diehard(참고의 첫 번째 항목 참조)입니다. Excel 2003에 구현된 이 알고리즘은 B.A. Wichman과 I.D. Hill(참고의 두 번째 및 세 번째 항목 참조)이 개발했으며, 미 정부 기구 산하의 총괄 감사실 및 미국 보건 복지부에서 제공하는 RAT-STATS 소프트웨어 패키지에도 사용되었습니다. 이 알고리즘은 또한 Rotz 이하 다른 연구원에 의해 DIEHARD 테스트 및 전 '미국 국립 표준국'이었던 NIST(미국 표준 기술 연구소)에서 개발한 추가 테스트도 통과했습니다.

참고

  • 이 테스트는 플로리다 주립 대학교의 George Marsaglia 통계학과 교수가 개발하였으며 다음 웹 사이트에서 사용할 수 있습니다.
    http://www.csis.hku.hk/~diehard
  • Wichman, B.A. 및 I.D. Hill, Algorithm AS 183: An Efficient and Portable Pseudo-Random Number Generator, Applied Statistics, 31, 188-190, 1982.
  • Wichman, B.A. 및 I.D. Hill, Building a Random-Number Generator, BYTE, 127-128페이지, 1987년 3월
  • Rotz, W., E. Falk, D. Wood 및 J. Mulrow, A Comparison of Random Number Generators Used in Business, Joint Statistical Meetings에서 공개, Atlanta, GA, 2001.
이 알고리즘의 기본 개념은 [0,1]에서 세 개의 난수를 취하여 이를 더할 경우 합계의 소수부 자체가 [0,1]에 대한 난수가 된다는 것입니다. Wichman과 Hill의 논문 원본에서 발췌한 Fortran 코드 목록의 중요한 문은 다음과 같습니다.
C	IX, IY, IZ SHOULD BE SET TO INTEGER VALUES BETWEEN 1 AND 30000 BEFORE FIRST ENTRY

IX = MOD(171 * IX, 30269)

IY = MOD(172 * IY, 30307)

IZ = MOD(170 * IZ, 30323)

RANDOM = AMOD(FLOAT(IX) / 30269.0 + FLOAT(IY) / 30307.0 + FLOAT(IZ) / 30323.0, 1.0)
따라서 IX, IY, IZ는 각각 0에서 30268, 0에서 30306, 0에서 30322 사이의 정수를 생성하게 됩니다. 이 문들은 마지막 문에서 결합되어 이전에 설명한 단순 원칙을 구현합니다. 즉, [0,1]에서 세 개의 난수를 취하여 이를 더할 경우 합계의 소수부 자체가 [0,1]에 대한 난수가 됩니다.

RAND는 의사 난수를 생성하므로 의사 난수의 시퀀스가 길어질 경우 결국에는 난수가 반복 생성됩니다. 그러나 Wichman-Hill 프로시저에서처럼 난수를 결합하면 이와 같은 반복이 일어나기 전에 10^13개의 난수가 생성됩니다. 이전 버전의 RAND를 사용할 경우 숫자가 반복되기 전의 주기가 지나치게 짧았기 때문에 몇몇 Diehard 테스트에서 만족스러운 결과를 얻을 수 없었습니다.

이전 버전의 Excel에서 실행한 결과

이전 버전의 Excel에서 사용된 RAND 함수는 백만 개 정도로 긴 시퀀스의 난수가 필요하지 않은 사용자에게는 문제가 없었습니다. 그러나 무작위성 표준 테스트를 통과하지 못했으며 긴 시퀀스의 난수가 필요한 상황에서는 이러한 성능이 문제가 되었습니다.

Excel 2003에서의 실행 결과

간단하고 효율적인 알고리즘이 구현되었습니다. 새로운 난수 생성 알고리즘은 무작위성 표준 테스트를 모두 통과했습니다.

결론

RAND 함수를 자주 사용하는 고급 사용자라면 긴 시퀀스의 난수가 필요한 경우 Excel 2003의 새로운 난수 생성 알고리즘을 사용하는 편이 좋습니다. 그러나 그 밖의 사용자는 이전 버전의 Excel에서 제공하는 RAND 함수를 사용해도 충분합니다.

참조

RAND 함수로 인해 발생할 수 있는 문제에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
834520 Excel 2003에서 RAND 함수가 음수를 반환한다




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 828795 - 마지막 검토: 2007년 3월 12일 월요일 - 수정: 5.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
키워드:?
kbinfo kbfunctions kbfuncstat KB828795

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com