Algorithm 如何从数组中提取随机元素,同时不产生任何重复项

Algorithm 如何从数组中提取随机元素,同时不产生任何重复项,algorithm,arrays,Algorithm,Arrays,我在iPhone项目中使用rand()函数生成一个随机数组索引。我生成几个随机索引,然后从这些索引中获取对象。但是,我不想多次获取一个对象,所以有没有一种方法可以说在数组计数范围内生成一个随机数(我已经这样做了),不包括以前拾取的数字 i、 例如: int one = rand() % arrayCount int two = rand() % arrayCount != one 谢谢有三种可能: 洗牌 创建数组并按顺序提取元素 回想起 提取一个随机元素并将其存储到NSSet中。如果下次提取一

我在iPhone项目中使用rand()函数生成一个随机数组索引。我生成几个随机索引,然后从这些索引中获取对象。但是,我不想多次获取一个对象,所以有没有一种方法可以说在数组计数范围内生成一个随机数(我已经这样做了),不包括以前拾取的数字

i、 例如:

int one = rand() % arrayCount
int two = rand() % arrayCount != one
谢谢

有三种可能:

洗牌 创建数组并按顺序提取元素

回想起 提取一个随机元素并将其存储到
NSSet
中。如果下次提取一个,请检查它是否已在集合中。(这是线性时间。)

删去 使用
NSMutableArray
并从数组中删除已提取的元素。如果您不想修改原始文件,请创建一个可变副本


哪一种最好取决于您的需要。

在提出此类问题时,尽量不要将其局限于某些编程语言。这将导致更多的答案,并使问题对更多的人更有用。@gs:您建议的三种解决方案的实现都需要了解特定语言的语法。将这个问题限制在提问者使用的任何语言都是有意义的。是的。但问题的作者完全满足于我给他的抽象解释。因此,他可以要求一个算法。