srand(time(null)) on iPhone don't work =(

2019-03-05 02:41发布

问题:

I need generate random numbers in my iPhone game. I using rand() function. But it isn't enough random. I tried using srand with time(Null). But my random generator was periodic. /dev/random isn't an answer because I need new random number each 0.1 sec.

回答1:

On iOS and OS X, use arc4random instead. Higher quality randomness, and no need to worry about seeding.

However, rand() shouldn't be noticably periodic, unless you're calling srand each time around. Or using the random numbers incorrectly.



回答2:

You could try random() / srandom() instead. Better generator than rand() / srand().



回答3:

Are you building for debug or on the simulator? I know I ran into this kind of issue when building some windows applications in debug, the RNG was automatically seeded with a constant value to produce consistent results. You may want to check what it is actually seeded with, and if you are getting different outputs at all each run.