【发布时间】:2012-09-12 14:49:50
【问题描述】:
我一直在寻找下面代码补丁的精确 Win 实现。我不是一个优秀的程序员,我的代码最初是在 UNIX 中,但我必须尽可能少地修改它以用于 Win。我从一些谷歌搜索中了解到,主要问题是没有 Win 等效项的“gettimeofday”。但是我想尽可能地保留相同的程序结构。
struct timeval tv;
time_t curtime;
gettimeofday(&tv, NULL); // ???
curtime = tv.tv_usec;
srand(tv.tv_usec); //time(&curtime)
【问题讨论】:
-
通常
srand(time(0))就足够了,你不需要亚秒级的分辨率来播种 PRNG,除非你希望每秒启动/停止程序几次。 -
将输出示例添加到该函数的控制台,就好像已经存在于 windowze 或您从 Unicse 运行一样
-
您清楚地了解这段代码的作用和原因吗?如果您只需要播种伪随机生成器,常用方法是以秒为单位使用当前 UTC 时间:
srand(time(NULL)),它适用于 UNIX 和 Windows。为什么你需要tv.tv_usec那只是微秒的休息时间? -
@Rost:OP 很可能在第 9 频道观看了 Stephan Lavavej 关于
rand的演讲,其中谴责rand共同使srand(time(0));成为一个大WTF,原因是所有程序都启动了在同一秒内获得相同的种子(对于大多数东西来说可能不是问题,但他在技术上是正确的)。
标签: c++ time visual-studio-2012 gettimeofday