首先抱歉问题标题,很难用几句话来解答这个问题。
基本上我有一个NS数组,用一个单词中的字母填充。然后随机显示这些字母,用户必须找到正确的字母才能使该字出现。目前我使用的代码类似于:
int length = [arrayForCount count];
int randomindex = arc4random() % length;
这确实实现了我想要的,但是因为它是随机的每次调用它产生相同的int,这反过来将产生例如两个字母e而不是数组中的另一个字母。
我也试过
randIdx = random() % [arrayForRound count];
有人可以帮我找一个从数组中随机显示值的方法,但不会丢失或加倍一些字母吗?
如果需要更多信息,请告诉我,感谢先进的帮助。 Ť
答案 0 :(得分:3)
正如我的评论中所提到的,将原始数组的对象复制到一个可变数组中并将其随机化:
NSUInteger count = [array count]; //array is the mutable copy of original array
for (NSUInteger i = 0; i < count; ++i) {
NSInteger elements = count - i;
NSInteger n = (arc4random() % elements) + i;
[array exchangeObjectAtIndex:i withObjectAtIndex:n];
}
现在,您可以在array
中逐个访问对象,它将是唯一的。你不会错过任何物品。