난수 생성기
IT 위키
AlanTuring (토론 | 기여)님의 2025년 4월 3일 (목) 07:12 판 (새 문서: 난수 생성기(random number generator, RNG)는 무작위적인 수열을 생성하는 알고리즘 또는 장치를 말한다. 컴퓨터에서는 대부분 '''의사난수 생성기(pseudorandom number generator)'''를 사용하며, 이는 완전히 무작위는 아니지만 통계적으로 무작위처럼 보이는 수열을 생성한다. ==개념== 난수 생성기는 다음 두 종류로 나뉜다: *'''의사난수 생성기(Pseudorandom Number Generator, PRNG)''' **초기...)
난수 생성기(random number generator, RNG)는 무작위적인 수열을 생성하는 알고리즘 또는 장치를 말한다. 컴퓨터에서는 대부분 의사난수 생성기(pseudorandom number generator)를 사용하며, 이는 완전히 무작위는 아니지만 통계적으로 무작위처럼 보이는 수열을 생성한다.
1 개념[편집 | 원본 편집]
난수 생성기는 다음 두 종류로 나뉜다:
- 의사난수 생성기(Pseudorandom Number Generator, PRNG)
- 초기값(시드, seed)에 따라 결정되는 알고리즘
- 반복 가능하고 재현 가능함
- 속도가 빠르고 간편하지만, 진정한 무작위성은 아님
- 진정한 난수 생성기(True Random Number Generator, TRNG)
- 물리적 현상(방사능 붕괴, 전기 노이즈 등)을 이용
- 예측 불가능하고 진정한 무작위성 확보 가능
- 속도나 비용 면에서 비효율적일 수 있음
2 의사난수 생성기의 예[편집 | 원본 편집]
- 선형 합동법(linear congruential generator)
- Xn+1 = (aXn + c) mod m
- 고전적인 방식이지만 품질이 떨어질 수 있음
- Mersenne Twister
- 널리 사용되는 고품질 PRNG
- 주기(period)가 매우 길고 통계적 성질이 우수
- Python의 기본 `random` 모듈에서 사용
- PCG, Xorshift, WELL 등
- 고속, 병렬화, 고품질을 추구한 현대적 알고리즘
3 시드(seed)[편집 | 원본 편집]
- 난수열은 시드에 의해 결정되며, 같은 시드를 주면 같은 수열이 생성됨
- 실험 재현이나 테스트에 매우 중요
- 종종 현재 시간 등으로 자동 설정되기도 함
4 활용[편집 | 원본 편집]
- 시뮬레이션(Monte Carlo 방법)
- 통계적 샘플링
- 게임, 암호학, 머신러닝
- 테스트 데이터 생성
5 주의사항[편집 | 원본 편집]
- 의사난수는 보안 목적에는 적합하지 않음
- 예: 암호학에는 CSPRNG(cryptographically secure PRNG)를 사용해야 함
- 난수의 품질이 낮으면 통계적 분석 결과나 시뮬레이션 결과가 왜곡될 수 있음
6 같이 보기[편집 | 원본 편집]
7 참고 문헌[편집 | 원본 편집]
- Knuth, D. E. (1997). The Art of Computer Programming, Vol. 2: Seminumerical Algorithms. Addison-Wesley
- L'Ecuyer, P. (1994). Uniform random number generation. Annals of Operations Research, 53(1), 77–120