You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言rand()函数运行不符合预期 循环中始终生成相同随机数

问题原因

C语言的rand()生成的是伪随机数,输出值完全由传入srand()的随机种子决定。你在for循环的每次迭代中都调用srand(3),相当于每次生成随机数前都将伪随机序列的起点重置到种子3对应的初始位置,所以每次调用rand()拿到的都是该种子对应序列的第一个值,自然会得到固定的683。

额外注意:你原代码中for循环的条件分隔符用了逗号,属于语法错误,需要改为分号才能正常编译运行。

修复方案

固定种子方案(适合调试场景,每次程序运行生成的随机序列一致)

将srand()调用移到for循环外部,整个程序运行周期内仅初始化一次种子即可:

srand(3);
for(a=0; a<10; a++){
  int sleep = (rand() % 400) + 500;
  // 后续业务逻辑
}

动态种子方案(适合正式场景,每次程序运行生成的随机序列不同)

如果需要每次启动程序都得到不同的随机结果,可以引入time.h头文件,用系统时间作为随机种子:

#include <time.h>

// 程序启动后仅执行一次种子初始化
srand((unsigned int)time(NULL));
for(a=0; a<10; a++){
  int sleep = (rand() % 400) + 500;
  // 后续业务逻辑
}

内容的提问来源于stack exchange,提问作者user16438868

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:45:07