如何生成一个好的随机种子传递给srand()?

zr.*_*zr. 6 c c++ random

我正在编写一个C++程序,需要为其内部用法创建一个临时文件.我想允许通过运行多个进程来同时执行程序,因此临时文件名需要随机化,这样每个生成的进程将生成一个唯一的临时文件名供自己使用.

我使用rand()为部分文件名生成随机字符,所以我需要使用srand()初始化随机数生成器的种子.

有什么选择可以将一个好的参数传递给srand(),这样两个进程就不会用相同的种子值进行初始化?我的代码需要在Windows和Linux上运行.

Wil*_*ill 24

问题实际上是询问如何创建一个唯一命名的临时文件.

操作系统可能为此提供API,这意味着您不必生成自己的名称.

在Windows上,它的调用GetTempFileName()GetTempPath().

在Unix上,使用tmpfile().

(Windows也支持tmpfile();但是,我听到其他人的报告,虽然它在XP上工作得很好,如果你在C:驱动器上并且你不是管理员,它在Vista上失败;最好使用这个GetTempFileName()方法自定义,安全的路径)

  • 在POSIX上它是mkstemp (3认同)
  • +1用于回答应该问的问题. (2认同)