我试图显示生成到数组中的随机数,但输出只显示一个数字多次。我正在调试代码,看到数组正在创建随机数。我试过在线寻找答案,但似乎没有任何东西可以让我显示随机数。我是一个超级菜鸟,我感到很困惑。任何信息都将不胜感激。
main()
{
int unSortedNumbers[10] = { 0 }, i = 0;
for (i = 0; i < US; i++){
srand((unsigned)time(NULL));
unSortedNumbers[i] = LB + rand() % (UB - LB + 1);
}
for (i = 0; i < US; i++)
printf("number %i) is %i.\n", i, unSortedNumbers[i]);
pause;
}
答案 0 :(得分:2)
尝试在循环前移动srand
:
srand((unsigned)time(NULL));
for (i = 0; i < US; i++){
unSortedNumbers[i] = LB + rand() % (UB - LB + 1);
}
首先,srand
应该在生成随机序列之前调用一次。
其次,要解释您观察到的内容,time
会返回time_t
:
由于历史原因,它通常被实现为表示自......以来经过的秒数的整数值。
因此,对time
的所有调用都可能在同一秒内发生,srand
使用相同的种子进行初始化。因此数字相同。