2009-11-01 183 views
0

我是iPhone編程新手。我有10個號碼說(1,2,3,4,5,6,7,8,9,10)。我想從上面的10個數字中隨機選擇1個數字。我怎樣才能從一組數字中選擇一個隨機數字?選擇隨機值

回答

2

如果你只是想在1和10之間的值,你可以使用標準的C rand()方法。這將返回一個介於零和RAND_MAX之間的整數。

要獲得介於0和9之間的值,可以使用%運算符。因此,要獲得一個價值1到10之間,你可以使用:

rand()%10 + 1 

如果你不想同系列的僞隨機數的每一次,你將需要使用srand種子的隨機數發生器。現在的時間是一個很好的價值。

如果您問的是從任意(可能是非連續)數字列表中選擇一個數字,您可以使用以下內容。

int numbers[] = {2,3,5,7,11,13,17,19,23,29}; 
int randomChoice = numbers[rand()%10]; 
+0

如果您想要爲每個號碼挑選一個號碼的可能性,請不要使用'%'! – Joey

+0

由於RAND_MAX通常相當龐大,因此概率可能只有很小的變化。 –

+0

*「告訴我如何得到一個隨機數」* - 「這裏」 - *「很好,謝謝,有什麼需要注意的嗎?」* - 「是的,分佈不統一,但沒關係」 - *「這不重要嗎?嘿,我在這裏創造了數十億的價值,你說這不重要嗎?」* ......要想得到正確並不難,只要你不對OP的要求非常瞭解並不會給他們一個低級的答案。 – Joey

0

要生成一個隨機數,你應該使用random()函數。但是如果你把它稱爲兩次,它會給你兩個相同的答案。在調用random()之前,調用srand(time())以獲取新的新隨機數。如果你想用(int i = 0; ...)創建數字, 使用srand(time()+ i)。

+2

random()的seed函數是srandom()。因此,使用random()和srandom()或rand()和srand(),但不要混合使用這兩者。一般來說,推薦使用random(),因爲隨機算法稍微好一點。 –

0

事情是這樣的:

- (IBAction)generate:(id)sender 
{ 
    // Generate a number between 1 and 10 inclusive 
    int generated; 
    generated = (random() % 10) + 1; 

} 
+0

無論你想說如果我想從10個數字中選擇隨機數,然後使用(random()%10)+1。如果是,那麼如果只有四個數字,那麼我使用下面的公式(random()%4)+1。請建議 – Rupesh