본문 바로가기
Programming/Objective-C

rand() 와 arc4random()

by 황금표정 2012. 7. 27.

원문 출처 : http://52c.me/archives/47


흔히 임의의 숫자를 생성할 때, rand() 함수를 많이 쓴다.


rand()는 0 에서 RAND_MAX 로 정의된 0x7fffffff (2,147,483,647) 까지의 숫자를,

arc4random()은 0에서 0×100000000 (4,294,967,296) 까지의 숫자를 추출하므로,

rand()보다는 arc4random()으로 더욱 신뢰할 만한 랜덤값을 얻을 수 있다.


또한 rand()는 반드시 사전에 srand(time(NULL)) 형태로 시딩을 해 주어야 하지만,

arc4random()은 자체 시딩로직이 있어 시딩이 필요 없다.


결론적으로 rand() 보다는 arc4random() 이 쓰기도 편하고 믿음직한 함수라 생각함.


arc4random()의 단점이라면, rand()보다는 속도가 많이 떨어지므로,

많은 객체를 가진 Array를 섞을 때라던가,

loop 안에서 여러번 수행해야 할 때는 문제가 될 수 있다.

반응형