2011-12-02 686 views

回答

6
#include <stdlib.h> 

// ... 

int i; 

do { 
    i = rand() % 10 + 1; // generate random number from 1 to 10 
} while (i == 5);  // repeat until number != 5 
+0

好的答案,但使用arc4random()更好,因爲它將生成隨機數字,無論任何種子。使用沒有唯一種子的rand()將產生相同的結果,每次應用程序已運行。 – zaph

+2

我認爲對開發者來說主觀性更好。如果他們每次都需要相同的隨機數序列會怎麼樣? – Danny

+1

@Danny:+1 - 每次程序運行時,我都沒有在問題中看到任何需要獨特序列的要求。而且'rand()'更具可移植性,如果需要的話,用適當的種子調用'srand()'也是相當簡單的。 –

2

一個簡單的解決方案是使用系統函數在1-10之間生成一個隨機數,如果它恰好是5,則再次生成一個隨機數,直到它不是這種情況。這個解決方案有一個很小的可能性,你的功能在iPhone連擊之前不會返回:)。另一種方法是下面列出

另一種解決方案是使用1-9之間的系統函數以生成隨機數,並映射5-9 6-10

int GenRandomNumber() 
{ 
    int x = GetSystemRandomBetween1and9(); 
    if (x >= 5) 
     x += 1; 
    return x; 
} 
+0

我喜歡第二解決方案,沒有想到這一點。 +1 –

+0

如何將5-9映射爲6-10請舉例,我是iphone新手。 – NoviceDeveloper

+1

我已經更新了答案。你必須實現你自己的** GetSystemRandomBetween1和9 ** –

6
int x = arc4random()%9; 
x += x>=4? 2 : 1