2015-06-15 100 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