2016-02-16 21 views
3

這段代碼從'A'到'Z'生成隨機字符,但是我只需要從'A','B','S'和'Z'字符生成隨機字符。請幫忙。如何在C中只生成'A','B','S'和'Z'的隨機字符?

int main (void) 
{ 
    srand(time(NULL)); 
    char random; 

    random = (rand() % 26) + 'A'; 

    printf ("Random: %c\n", random); 

    return 0; 
} 
+0

只需在0到3之間選擇一個隨機數,然後用'switch'語句將這個數字映射到你的字符。 –

+5

@MartinZabel四個字符的數組將更好地工作.. –

+0

@EugeneSh。你是對的。這更優雅。 –

回答

3

由於字符串文字,例如"ABSZ"可用於像的char一個數組,你可以選擇從一組允許的字符一個隨機字符的代碼是這樣

random = "ABSZ"[rand()%4]; 
2

用允許的字符做一個字符串;

0number of characters - 1(c數組從零開始)選擇一個隨機數;

終於從字符串挑選隨機選擇的字符訪問它作爲數組

(字符串是字符數組)

int main (void) 
{ 
    char *characters="ABSZ"; 
    int whichOne; 

    srand(time(NULL)); 

    whichOne = rand() % 4; // 0..3 

    printf ("Random: %c\n", characters[whichOne]); 

    return 0; 
} 
1

user3386109很好的答案顯得過於簡單,輕便,易於理解的和有用的。

如何處理一些混淆?

int rand ABSZ(void) { 
    int x = rand()%4; 
    return ((x*-13 + 63)*x + -47)*x/3 + 'A'; 
} 
+1

我不明白第一行... –

+0

@Eugene Sh。只是一點樂趣,user3386109答案就好。 – chux

相關問題