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

C语言如何清除所有内容?调用shor.exe十次随机数重复问题求助

解决shor.exe多次运行随机数相同的问题

嘿,这个坑我踩过!你遇到的根本不是“程序没重置变量”的问题——毕竟每次system("shor.exe 15")都会启动一个全新的独立进程,每个shor.exe的内存空间都是完全隔离的,父进程的状态不会影响它们。真正的问题出在shor.exe自身的伪随机数生成器(PRNG)初始化上。

为什么随机数会重复?

C语言里的rand()函数默认是用固定种子(通常是1)来生成随机序列的。如果shor.exe里没有在使用rand()之前调用srand()设置一个变化的种子,那不管你运行多少次,它生成的随机数序列都会完全一模一样——哪怕是不同的进程实例也不例外。

怎么解决?

最靠谱的办法是修改shor.exe的代码,给随机数生成器设置一个随时间变化的种子:

#include <stdlib.h>
#include <time.h>

int main() {
    // 用当前系统时间作为随机种子,确保每次启动种子都不一样
    srand((unsigned int)time(NULL));
    
    // 之后再调用rand()生成随机数
    int random = rand();
    
    // 你的其他代码逻辑...
    return 0;
}

如果你的shor.exe运行速度特别快(比如一秒内就能跑完好几次),time(NULL)返回的秒数可能会重复,这时候可以用更高精度的时间来做种子:

  • Linux下可以用gettimeofday()获取微秒级时间
  • Windows下可以用QueryPerformanceCounter()获取高精度计时器值

要是你没法修改shor.exe的代码,那只能退而求其次,在父进程的循环里每次调用前加个短暂延迟(比如sleep(1)),但这只是临时 workaround,不推荐作为长期解决方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:19:07