rand
-
난수, rand() 함수@ 16. 1 ~ 17. 1/C++ 2015. 11. 17. 19:25
나머지 기반 난수 발생기의 결점은 기본적으로 rand함수 때문에 생기는 것이다. rand함수는 20억 주기의 값들을 돌려주지만, 나머지를 적용하면 그 주기가 줄어든다. rand 함수가 생성한 수들의 하위 비트들에는 패턴이 존재하며, 그 패턴의 주기는 20억보다 훨씬 짧다. 그런데 나머지는 본질적으로 수의 상위 비트들을 잘라내므로 결과적으로 나머지를 통해 얻은 난수들의 주기가 원래의 난수들보다 훨씬 짧아지게 된다. 즉, 패턴이 좀 더 자주 반복되는 것이다. 패턴이 좀 더 나은 난수 생성기를 만들기 위해서는 하위 비트들이 아니라 상위비트들을 보존 활용해야한다. 나누기를 이용한 범위 결정 상위 비트를 보존 활용하는 가장 쉬운 방법은 나누기 연산자를 사용하는 것이다. number = ((6 * rand()) /..