我在我的 iPhone 项目中使用 rand() 函数来生成随机数组索引。我生成几个随机索引,然后从这些索引中获取对象。但是我不想多次获取一个对象,所以有没有一种方法可以在数组计数范围内生成一个随机数(我已经在做),不包括以前选择的数字。
即像这样:
int one = rand() % arrayCount
int two = rand() % arrayCount != one
谢谢
最佳答案
三种可能性:
洗牌
Shuffle您的数组并按顺序提取元素。
记住
提取一个随机元素并将其存储到 NSSet
中。如果您下次提取一个,请检查它是否已经在集合中。 (这是线性时间。)
删除
使用 NSMutableArray
并从数组中删除已经提取的元素。如果您不想修改原始副本,请创建一个可变副本。
哪个最好取决于您的需求。
关于algorithm - 如何在不产生任何重复项的情况下从数组中提取随机元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1481110/