2013-03-05 84 views
1

首先抱歉的問題標題上增加一倍,這是很難用幾句話得到了這個問題。訪問的NSArray隨機,但沒有丟失或物體

基本上我有正由在字中的字母的填充NS陣列。然後隨機顯示這些字母,並且用戶必須找到正確的字母來形成單詞。目前我使用類似的代碼如下:

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

這並不acheive但是我想要的,因爲它是隨機的每個調用它產生相同的INT,這反過來將產生例如兩個字母e的而不是另一封信在數組中。

我也曾嘗試

randIdx = random() % [arrayForRound count]; 

可能有人請幫助我找到從陣列中隨機顯示的值,但不會錯過或一些字母翻倍的方法嗎?

讓我知道是否需要更多信息,感謝您在高級幫助。牛逼

+2

爲什麼不洗牌數組,然後逐一訪問項目? – iDev 2013-03-05 00:28:44

+1

是的,和往常一樣,我問了這個問題,5秒鐘後發現答案:-p,我將使用shuffle而不是訪問隨機整數。 – 2013-03-05 00:31:25

+0

是的美麗,是要張貼一些代碼,但你做到了,它看起來堅實所以將接受,再次感謝您的幫助 – 2013-03-05 00:33:54

回答

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一個輪空一個訪問的對象,它會是獨一無二的。你也不會錯過任何物品。