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

int rand = arc4random_uniform(104);

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

感谢您的任何建议。

最佳答案

不能保证 ar4random_uniform() 不会重复。想一想——你要求它产生一个 0 到 103 之间的数字。如果你这样做一百零五次,它别无选择,只能重复它之前的选择之一。这个函数怎么知道你要请求一个号码多少次?

您要么必须检查已经获得的数字列表,如果重复,则请求一个新的数字,或者对数组进行洗牌。应该有很多关于 SO 的问题。这是最古老的之一: What's the Best Way to Shuffle an NSMutableArray?

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

关于objective-c - 非重复 arc4random_uniform,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10233517/

10-11 19:28
查看更多