【发布时间】:2010-09-05 08:43:27
【问题描述】:
我需要在 boost 中为一些进程(从 int 加载)中的随机数生成器播种,用于必须在 Windows 和 Linux 中编译和工作的程序。
我使用了std:time(0),它有效,但由于这些进程是同时运行的作业,因此其中一些会同时运行,产生相同的结果。
所以我需要从毫秒或任何其他跨平台随机生成器开始播种。我尝试了clock(),但无法将其从time_t 转换为int。
谢谢。
【问题讨论】:
-
即使以毫秒为精度,也可能有 2 个线程以相同的种子结束。
-
我希望这不是为了安全。
-
@Goz:Windows 通常精确到 32 毫秒...
-
@Steven:基于时钟滴答的计时需要 10-16 毫秒,对于 QueryPerformanceCounter 来说非常随意——这可能更适合这个。在 PID 中进行异或运算,我会说。
-
@Tony:嗯,
QueryPerformanceCounter至少分辨率更高。我会坚持使用 CSP。