关于C中随机数的一个问题

C语言 码拜 9年前 (2015-05-11) 979次浏览 0个评论

为了节约大家的时间,我用最少的文字来描述我的疑惑。
之前我在写程序遇到随机数问题时通常用这种方法实现:

srand((unsigned) time(NULL));

for(i = 0; i < n; i++){
    array[i] = rand() % 10;
}

事实上也的确符合我的需求。但是今天我在写一个稍大些的程序使用相同方式时,发现了这个让我不知所措的情形:
1.首先,我在运行代码时,发现两个随机生成的数(简称value_1 value_2)总是相同的(如下图)
关于C中随机数的一个问题
随后,我在进行跳步调试,打印输出结果发现,输出结果又完全符合我的需求
关于C中随机数的一个问题
2.我知道srand的生成随机数的机制是根据时间来生成的,所以我怀疑是运行时程序完成太快时间消耗太少导致的。但实际上更短的程序(正如最上边的代码)有时可以生成不同的随机数的。

因此我想请教各位前辈,您是怎样看待这种运行时出错,而调试输出反而正常的随机数错误的。谢谢大家。

20分
不要把srand放在取随机数的地方,这玩意初始一次就够了。然后每一次的rand()里面会有线性同余的方法作一下叠代运算。
谢谢您,受教了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于C中随机数的一个问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!