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

使用rand()函数循环生成随机数时每次输出相同数值如何解决

问题原因

rand() 本质是伪随机数生成函数,输出的随机序列完全由初始种子决定。你没有在程序启动时手动设置随机种子,系统会默认使用固定值1作为初始种子,因此每次运行程序时,rand() 生成的随机数序列完全相同,和你是否在循环中调用没有关系。

修复方案

你只需要在第一次调用rand()之前,全局执行一次种子初始化即可,通常用系统时间戳作为种子保证每次运行种子不同:

  • 首先引入时间头文件:
#include <time.h>
  • 在main()函数的起始位置添加种子初始化代码:
srand((unsigned int)time(NULL));

注意事项

  • 不要把srand()放在循环或者PlayGame函数内部重复调用,整个程序生命周期内只需要调用1次即可。如果多次调用且间隔小于1秒,time(NULL)返回的时间戳相同,反而会导致生成的随机数重复。
  • 你当前代码里的随机数生成逻辑得到的数值范围是[Difficulty, 2*Difficulty - 1],如果这个范围符合你的业务预期就不需要调整,否则可以自行修改取模和偏移参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:57:05