【问题标题】:Problems with displaying random number array [duplicate]显示随机数数组的问题[重复]
【发布时间】:2014-09-26 21:56:21
【问题描述】:

我正在尝试显示生成到数组中的随机数,但输出只显示一个数字多次。我正在调试代码,但看到数组正在向其中创建随机数。我试过在网上寻找答案,但似乎没有什么能让我显示随机数。我是一个超级菜鸟,我很困惑。任何信息将不胜感激。

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

【问题讨论】:

    标签: c arrays random


    【解决方案1】:

    尝试在循环之前移动srand

    srand((unsigned)time(NULL));
    for (i = 0; i < US; i++){
        unSortedNumbers[i] = LB + rand() % (UB - LB + 1);
    }
    

    首先,srand 应该在生成随机序列之前被调用一次。

    其次,解释一下你观察到的情况,time 返回time_t

    由于历史原因,它通常被实现为一个整数值,表示自 .... 以来经过的秒数。

    因此,可能所有对time 的调用都发生在同一秒内,并且srand 使用相同的种子进行了初始化。因此是相同的数字。

    【讨论】:

    • 你是男人的英雄!非常感谢,它工作得很好!
    • @Brandon 我刚刚添加了几行来解释相同数字的可能原因。 (不管srand 应该使用一次。)
    猜你喜欢
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多