objective-c – 非重复arc4random_uniform

我一直试图让非重复的arc4random_uniform现在为我的iPhone应用程序工作多年.关于stackoverflow的所有问题和答案都没有运气,现在我希望有人可以帮助我.我想要做的是选择1到104之间的13个不同的随机数.我已经让它工作到它选择13个不同的数字,但有时两个是相同的.

int rand = arc4random_uniform(104);

这就是我正在做的事情,然后我使用rand从数组中进行选择.如果更容易改组阵列,然后从顶部选择13,那么我会尝试,但我需要帮助如何,因为这似乎更难.

感谢任何建议.

最佳答案
无法保证ar4random_uniform()不会重复.想想它一秒钟 – 你要求它产生0到103之间的数字.如果你这样做了一百零五次,它别无选择,只能重复其中一个早期的选择.该函数怎么能知道你要请求一个号码的次数?

你要么必须检查你已经获得的数字列表,如果它是重复的话,请求一个新的数字,或者洗牌.关于此,应该有任何数量的问题.这是最古老的一个:What’s the Best Way to Shuffle an NSMutableArray?.

关于非重复随机数的问题也有很多:https://stackoverflow.com/search?q=%5Bobjc%5D+non-repeating+random+numbers

转载注明原文:objective-c – 非重复arc4random_uniform - 代码日志