如何从数组中提取随机元素,而不会产生任何重复

0 arrays algorithm

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

即是这样的:

int one = rand() % arrayCount
int two = rand() % arrayCount != one
Run Code Online (Sandbox Code Playgroud)

谢谢

Geo*_*lly 8

三种可能性:

洗牌

随机播放阵列并按顺序提取元素.

记得

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

删除

使用NSMutableArray和删除数组中已提取的元素.如果您不想修改原始版本,请制作可变副本.

哪一个最好取决于您的需求.