2012-08-24 18 views
1

我有整數中的數字是0,17,23,44,57,60,66,83,89,91,100,但我想隨機選擇6號碼,要做到這一點?我只能顯示0-100的一個隨機數,但我不知道如何從選定的數字中顯示6個數字。請教。隨機xcode中的選定號碼

+0

這些整數值插入數組還是不是? –

回答

2

如果你想挑選六個號碼不脫離重複陣列,使用Knuth-Fisher–Yates shuffle對數組進行混洗,並取前六個數字:

int data[] = {0, 17, 23, 44, 57, 60, 66, 83, 89, 91, 100}; 
// Knuth-Fisher-Yates 
for (int i = 10 ; i > 0 ; i--) { 
    int n = rand() % (i+1); 
    int tmp = data[i]; 
    data[i] = data[n]; 
    data[n] = tmp; 
} 

data數組的前六個元素包含來自原始11元素數組的隨機選擇。

+0

+1:事實上,在這種特殊情況下,他需要一個隨機的行爲! –

1

將數字放入數組中。使用一個隨機數生成器來獲得一個小於數組長度的0到1之間的隨機數,然後獲得該索引處的數字。

這只是一種方法。

1

有關讀取該隨機數到數組爲下面的代碼可以是你

[array objectAtIndex: (random() % [array count])] 

這裏有用的是例如

NSUInteger firstObject = 0; 

for (int i = 0; i<[myNSMutableArray count];i++) { 
    NSUInteger randomIndex = random() % [myNSMutableArray count]; 
    [myNSMutableArray exchangeObjectAtIndex:firstObject withObjectAtIndex:randomIndex]; 
    firstObject +=1; 

} 
+0

你的實現包含一個非常常見的[從整個範圍中挑選一個隨機元素的實現錯誤](http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#Implementation_errors)。正如維基文章中所解釋的那樣,選擇是有偏見的。 – dasblinkenlight

+0

感謝您通知我。+1爲它 –