time(NULL) returns 总是相同的值

time(NULL) returns allways same value

我想用随机数填充一个数组(我使用 cuRand),但是当我注意到虽然显然是随机的,但每次我 运行 代码(我我在谈论不同的处决)它们总是相同的数字(不是那么随机)。我继续检查我的种子,我总是收到相同的值,即 1462615827。我试图让它无符号,但我收到了完全相同的值。在这个田园诗般的代码中可能会发生什么?

unsigned long seed1 = unsigned(time(NULL));
printf("%lu\n", seed1); 
//The same number is printed every execution

编辑:最奇怪的事情发生了。我把工作保存在我的网盘上,然后重新启动了我的电脑。它不会工作(我认为主板崩溃了)。我只是继续在另一台 PC 上工作,种子就完美地获取了。那么,会不会是硬件故障?

time() 不是 return 随机数。 return 是当前日历时间。通常,该值表示自纪元以来的秒数(通常是 00:00 小时,1970 年 1 月 1 日 UTC)。

如果值不大于有符号类型可以表示的值,那么从无符号类型转换将产生相同的值,如您所见。这是预期的。

I proceeded to check my seed, and I received always the same value which was 1462615827

那个时间大约是您发布问题前的 4 分钟。我假设你实际上并没有尝试执行你的程序,除非在那一秒。

如果是,那么这可能是 OS 或硬件问题。