显示随机数组的问题

时间:2014-09-26 21:56:21

标签: c arrays random

我试图显示生成到数组中的随机数,但输出只显示一个数字多次。我正在调试代码,看到数组正在创建随机数。我试过在线寻找答案,但似乎没有任何东西可以让我显示随机数。我是一个超级菜鸟,我感到很困惑。任何信息都将不胜感激。

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;
}

1 个答案:

答案 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使用相同的种子进行初始化。因此数字相同。