用Objective-C在iOS上生成随机数的最佳方法是什么?
如果我使用 (int)((double) rand() / ((double)(RAND_MAX) + (double) 1) * 5.0)
生成从0到4的数字,则每次在iPhone上启动程序时,它都会生成相同的数字。
用Objective-C在iOS上生成随机数的最佳方法是什么?
如果我使用 (int)((double) rand() / ((double)(RAND_MAX) + (double) 1) * 5.0)
生成从0到4的数字,则每次在iPhone上启动程序时,它都会生成相同的数字。
这里有一个非常类似的问题StackOverFlow上的问题。以下是其中一个更好的解决方案(不需要种子):
int r = arc4random() % 5;
#define RANDOM_SEED() srandom(time(NULL))
#define RANDOM_INT(__MIN__, __MAX__) ((__MIN__) + random() % ((__MAX__+1) - (__MIN__)))
所以您可以提供最小值和最大值
你应该使用当前时间来种子化随机数生成器。
srand(time(0));
你需要多么随机呢?如果你希望生成加密级别的随机数,则可以使用SecRandomCopyBytes()函数。
在程序开始时调用srand()
,它会重新生成随机数生成器
生成随机数的简单函数:
int r = arc4random() % 42; // generate number up to 42 (limit)