2014-09-26 44 views
1

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

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

回答

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

+0

你是男人的英雄!非常感谢,它工作完美! – Brandon 2014-09-26 22:07:57

+0

@Brandon我刚刚添加了几行来解释相同数字的可能原因。 (不管“srand”应该使用一次)。 – AlexD 2014-09-26 22:16:25