【发布时间】:2014-06-02 12:59:20
【问题描述】:
所以通常我使用类似的东西:
srand(time(0));
获得随每次程序调用而变化的伪随机性。但是,我现在的情况是,我有一批将同时启动的程序,并且由于 time 每秒只更改一次,所以大多数情况下我的所有程序都以相同的种子开始。
当我想同时启动一堆程序并且都获得不同的种子时,有什么更好的策略来播种我的 RNG?
【问题讨论】:
-
使用更细粒度的计时器(即系统纳秒计数器)并将其与进程 ID 混合。对于安全应用程序或蒙特卡洛模拟仍然不够好。
-
使用 rdtsc stackoverflow.com/a/7617612/995714,它是处理器启动后的伪周期数。如果您需要更多保证,请使用 PID 异或