2015-12-02 81 views
-1
void getRandomWords() 
{ 
int n, i = 0; 
do 
{ 
    srand((int)time(NULL)); 
    n = rand() % 10; 
    for (int j = 0; j < 10; j++) { 
     printf("%c\n", words[n][j]); 
    } 
    i ++; 
}while(i < 4); 
} 

我写上面的代码,以便选择从字的阵列4个随机字如下:从词语的2D阵列选择一个随机字

char words[10][10] = {"dog", "cat", "horse", "cow", "goat", "monkey", "elephant", "crow", "fish", "snake"}; 

当我执行prgram相同随机单词被显示4次,但是当我运行调试器时,一切似乎都工作正常! (正在显示4个不同的单词)。有人能告诉我这里发生了什么吗?

+0

可能重复[调用rand()返回非随机结果](http://stackoverflow.com/questions/9686271/calling-rand-returning-non-random-results) – usr2564301

回答

3

您只需种子一次。

,就把这行

srand((int)time(NULL)); 

外循环。

rand()函数的设计使得它将产生给定种子的相同数字序列。由于内部循环可能会很快发生,因此您会看到相同的数字序列。

+0

该死的,感谢的家伙...另外我需要帮助才能实现某些功能,以便同一个单词不能被随机选择两次......如果随机选择了每个单词,我试图设置一个“int”变量为“1”。请问有更可行的方法吗?再次感谢人! –

+0

@DavidFarrugia做出一系列可能的回应。从数组长度中随机选取一个索引。然后将最后一个数组元素复制到间隙中,并减少下一个随机选择的选择数量。 –

+0

@WeatherVane嗯,我没有想到这一点。谢谢你:) –

相关问题