我想用随机数填充数组(我使用cuRand
),但是当我注意到虽然显然是随机的,但每次我运行代码时都会感到惊讶(我说的是不同的执行)他们在那里,总是相同的数字(不是那么随机)。我继续检查我的种子,我收到的值始终是1462615827
。我试图让它无符号,我收到完全相同的值。这个田园诗般的代码可能会发生什么?
unsigned long seed1 = unsigned(time(NULL));
printf("%lu\n", seed1);
//The same number is printed every execution
编辑:最奇怪的事情发生了。我将工作保存在网络磁盘上,然后重新启动了我的电脑。它不会工作(我认为主板崩溃)。我只是继续在另一台PC上工作,种子被完美地拿走了。那么,它可能是硬件故障吗?
答案 0 :(得分:3)
time()
不会返回随机数。它返回当前的日历时间。通常,该值表示自纪元以来的秒数(通常为UTC时间1970年1月1日00:00)。
如果该值不大于可以用有符号类型表示的值,那么从无符号转换将产生相同的值,如您所观察到的那样。这是预期的。
我继续检查我的种子,我收到的值始终为
1462615827
在您发布问题之前大约4分钟。我认为你实际上没有尝试过执行你的程序,除非是在那一秒钟。
如果你这样做,那么这可能是操作系统或硬件问题。