【发布时间】:2010-10-05 08:28:00
【问题描述】:
在 iOS 上使用 Objective-C 生成随机数的最佳方法是什么?
如果我使用(int)((double) rand() / ((double)(RAND_MAX) + (double) 1) * 5.0) 生成一个从 0 到 4 的数字,那么每次我在 iPhone 上启动该程序时,它都会生成相同的数字。
【问题讨论】:
标签: ios objective-c random
在 iOS 上使用 Objective-C 生成随机数的最佳方法是什么?
如果我使用(int)((double) rand() / ((double)(RAND_MAX) + (double) 1) * 5.0) 生成一个从 0 到 4 的数字,那么每次我在 iPhone 上启动该程序时,它都会生成相同的数字。
【问题讨论】:
标签: ios objective-c random
有一个非常相似的问题here on 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)
【讨论】: