這段代碼從'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;
}
這段代碼從'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;
}
由於字符串文字,例如"ABSZ"
可用於像的char
一個數組,你可以選擇從一組允許的字符一個隨機字符的代碼是這樣
random = "ABSZ"[rand()%4];
用允許的字符做一個字符串;
從0
到number 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;
}
user3386109很好的答案顯得過於簡單,輕便,易於理解的和有用的。
如何處理一些混淆?
int rand ABSZ(void) {
int x = rand()%4;
return ((x*-13 + 63)*x + -47)*x/3 + 'A';
}
我不明白第一行... –
@Eugene Sh。只是一點樂趣,user3386109答案就好。 – chux
只需在0到3之間選擇一個隨機數,然後用'switch'語句將這個數字映射到你的字符。 –
@MartinZabel四個字符的數組將更好地工作.. –
@EugeneSh。你是對的。這更優雅。 –