MT(Mersenne Twister 메르센 트위스터)
- 유사 난수 생성기. 기존 생성기의 문제점을 피하며 매우 질이 좋은 난수를 빠르게 생성 가능.
- 32bit(MT19937), 또는 64bit(MT19937_64) 크기의 난수 생성 가능.
- 난수의 특성(주기, 난수의 범위 등)을 알고 있으면 그 뒤 나올 난수를 예측 가능하기 때문에 암호학적으로 안전한 생성기는 아님.
- 예시1
- 예시2 - C++ 표준을 좀 더 다양하게 사용한 개선 코드
WELL
- MT의 개발자가 10년 후에 고안한 난수 발생 알고리즘.
- MT보다 40% 가량 빠르며 코드도 더 간단하다고 함.
- 분포도에 따라 WELLS512, WELLS1024, WELLS19947(숫자가 커질 수록 분포도↑) 등 다양한 종류가 존재.
2번째 예제에서 랜덤함수의 범위를 정해놓고 (std::uniform_int_distribution dist(0, 99);)
답글삭제왜 랜덤함수를 뽑을 때
std::cout << std::setw(3) << generator()%100;
100으로 나머지 연산을 해주신 건가요??
나머지 연산을 안해도 범위에 맞게 생성 되네요
작성자가 댓글을 삭제했습니다.
답글삭제