걍 심심해서 테스트 해봤습니다. Windows에서 Visual Studio를 설치하고 srand와 rand함수를 사용해 랜덤 값을 뽑아내면 얼마나 랜덤할 수 있는지...;;
srand() 함수
rand() 함수
Visual Studio 2010/2008 기준으로 이와 같이 정의가 되어 있습니다.
( 그 하위 버전은 확인 못함.. )
최소 값은 0x0000, 최대 값은 0x7fff 가 되겠군요.
아래는 테스트 코드입니다. srand의 인자로 얼마나 랜덤 적이고 동적인 값을 넣어야 하는게 관건인듯 싶은데..
걍 전 rdtsc를 사용해 넣어봤습니다. ( time()이나 GetTickCount() 함수들 보단 동적이므로.. ㅎㅎ )
한번 실행마다 10억 번의 rand를 뽑아내 그 빈도를 조사해보았습니다.
가장 많이 나온 숫자의 횟수와 가장 적게 나온 숫자의 횟수를 조사해 %로 알아보았습니다.
여러번의 실행을 해보았습니다.
srand() 함수
rand() 함수
Visual Studio 2010/2008 기준으로 이와 같이 정의가 되어 있습니다.
( 그 하위 버전은 확인 못함.. )
최소 값은 0x0000, 최대 값은 0x7fff 가 되겠군요.
아래는 테스트 코드입니다. srand의 인자로 얼마나 랜덤 적이고 동적인 값을 넣어야 하는게 관건인듯 싶은데..
걍 전 rdtsc를 사용해 넣어봤습니다. ( time()이나 GetTickCount() 함수들 보단 동적이므로.. ㅎㅎ )
한번 실행마다 10억 번의 rand를 뽑아내 그 빈도를 조사해보았습니다.
가장 많이 나온 숫자의 횟수와 가장 적게 나온 숫자의 횟수를 조사해 %로 알아보았습니다.
여러번의 실행을 해보았습니다.
Max: 31308/1000000000 0.003131%
Min: 29715/1000000000 0.002971%
Max: 31267/1000000000 0.003127%
Min: 29783/1000000000 0.002978%
Max: 31222/1000000000 0.003122%
Min: 29809/1000000000 0.002981%
Max: 31343/1000000000 0.003134%
Min: 29782/1000000000 0.002978%
Max: 31234/1000000000 0.003123%
Min: 29743/1000000000 0.002974%
Max: 31258/1000000000 0.003126%
Min: 29701/1000000000 0.002970%
Max: 31209/1000000000 0.003121%
Min: 29777/1000000000 0.002978%
정확히 100%를 32767로 나누면 0.00305185% 쯤 나오는데
기준 %를 기점으로 대략 ±0.0001% 밖에 벗어나질 않는군요.
결론 : 골고루 랜덤한 값이 나옵니다 -_-;; 이상 뻘짓.............. 흑흑..
기준 %를 기점으로 대략 ±0.0001% 밖에 벗어나질 않는군요.
결론 : 골고루 랜덤한 값이 나옵니다 -_-;; 이상 뻘짓.............. 흑흑..
'My Study > Programming&Theory' 카테고리의 다른 글
ELF 파일의 PLT, GOT (3) | 2012.04.26 |
---|---|
Calling Convention Process for AMD 64 Bit (4) | 2012.04.02 |
ARM 명령어 공부 (6) | 2012.01.27 |
BlockInput Function (3) | 2012.01.20 |
My BSOD (2) | 2012.01.08 |