2015-06-15 123 views
0

我有這樣,創建陣列利用一組列表

srand((unsigned) 0); 
    for(n = 0; n < len; ++n) 
    {       
     word[ n ] = 'a' + rand() % ; 

    } 
    word[ n ] = '\0'; 

和我需要它從非連續,字符,B,H,G,K,V和填充的一組列表中選擇該隨機字符包含所選字符的字符串。我不知道該怎麼做是讓我的程序只從那幾個字符中選擇

+0

什麼是'word [n] ='a'+ rand()%;'? –

回答

2

生成0到4之間的整數([B,H,G,K,V]的最後一個索引)。

然後使用該隨機整數索引到你的字符數組:

static const char letters[] = "BHGKV"; //your letters as a string 
word[n] = letters[rand() % 5]; //get a random letter from letters 

注意,rand() % 5可能不是generate a random number in a range的最佳途徑。

+0

請注意,如果'(RAND_MAX + 1)%5!= 0',這將不會產生均勻分佈。旁註:爲什麼不使用字符串文字,而是使用「int」? – Olaf

+0

@Olaf是的,的確如此。但OP代碼中'%'後面的操作數丟失怎麼辦?你注意到了嗎? –

+0

你爲什麼使用'floor'功能?在最好的情況下它是無操作的,並且如果整數的double值小於int本身就會產生問題。 – mch