在Windows和Linux中毫秒级的随机种子

我需要在boost(从int加载)中为随机数发生器播种几个进程,这个程序必须在Windows和Linux中编译和工作。

我使用std:time(0) ,但是由于进程是同时运行的作业,其中一些会在同一秒运行,产生相同的结果。

所以我需要从毫秒或其他任何跨平台的随机生成器。 我试过clock()但不能完全让它从time_t转换为int。

谢谢。

Solutions Collecting From Web of "在Windows和Linux中毫秒级的随机种子"

如果你从一个脚本开始所有的工作。

然后你可以在命令行上传递一个递增的数字作为参数。 每个作业然后将此值添加到time()的结果中以生成其种子。

注意:我没有看到OP有关安全的任何要求。
原代码使用时间(NULL),这将有一个猜测种子。

 int main(int argc,char* argv[]) { srand(time(NULL) + boost::lexical_cast<int>(argv[1])); // STUFF } 

您可能最好使用平台特定的随机数字源。 在Linux上,使用/dev/urandom并读取几个字节。 在Windows上,获取熵的几个字节的简单方法是UuidCreate