1

首先对问题标题感到抱歉,很难用几句话来回答这个问题。

基本上我有一个由单词中的字母填充的 NS 数组。然后随机显示字母,用户必须找到正确的字母来组成单词。目前我正在使用与此类似的代码:

int length = [arrayForCount count];
int randomindex = arc4random() % length;

这确实实现了我想要的,但是因为它是随机的,每次调用它都会产生相同的 int,这反过来会产生例如两个字母 e,但不会产生数组中的另一个字母。

我也试过

randIdx = random() % [arrayForRound count];

有人可以帮我找到一种方法来随机显示数组中的值,但不会丢失或加倍一些字母吗?

如果需要更多信息,请告诉我,感谢您的帮助。吨

4

1 回答 1

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一个接一个地访问对象,它将是独一无二的。您也不会错过任何物品。

于 2013-03-05T00:31:20.807 回答