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

孟达与星驰 2015-05-16 12:06:00
为了节约大家的时间,我用最少的文字来描述我的疑惑。
之前我在写程序遇到随机数问题时通常用这种方法实现:

srand((unsigned) time(NULL));

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

事实上也的确符合我的需求。但是今天我在写一个稍大些的程序使用相同方式时,发现了这个让我不知所措的情形:
1.首先,我在运行代码时,发现两个随机生成的数(简称value_1 value_2)总是相同的(如下图)

随后,我在进行跳步调试,打印输出结果发现,输出结果又完全符合我的需求

2.我知道srand的生成随机数的机制是根据时间来生成的,所以我怀疑是运行时程序完成太快时间消耗太少导致的。但实际上更短的程序(正如最上边的代码)有时可以生成不同的随机数的。

因此我想请教各位前辈,您是怎样看待这种运行时出错,而调试输出反而正常的随机数错误的。谢谢大家。
...全文
119 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟达与星驰 2015-05-16
  • 打赏
  • 举报
回复
谢谢您,受教了
frankizhong 2015-05-16
  • 打赏
  • 举报
回复
不要把srand放在取随机数的地方,这玩意初始一次就够了。然后每一次的rand()里面会有线性同余的方法作一下叠代运算。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧