[C/C++] rand() % M 사용하지 말라!!


[C/C++] rand() % M 사용하지 말라!!

출처 : http://rockdrumy.tistory.com/540 영어 원문 : http://members.cox.net/srice1/random/crandom.html ANSI C에서는 rand()는 0과 RAND_MAX 범위 안의 정수를 무작위로 발생 시키는데 RAND_MAX값은 stdlib.h에 정의되어 있고 일반적으로 최소 32767 이상이다. 주목 할 것은 32767 이라는 수가 큰 수가 아니라는 점이다. 만약 RAND_MAX가 32767 이라면 시퀀스가 시작되어 난수성을 상실할 때까지 20000개의 난수 정수를 얻을 수 있을 것이다. RAND_MAX는 더 커져야 한다. 당신을 위해서라도 RAND_MAX 값을 확인해보자. 경험상 난수성을 상실 할 때까지 RAND_MAX의 2/3 정도의 숫자만 발생 할 수 있을 것이다. 안전을 위해서 나는 RAND_MAX의 1 / 10 보다 작은 난수 값을 만들 것을 추천한다. 만약 RAND_MAX의 1 / 10 이상보다 더 큰 수를 필요로...


#IT·컴퓨터

원문링크 : [C/C++] rand() % M 사용하지 말라!!