【发布时间】:2014-11-30 03:43:06
【问题描述】:
在rand() considered harmful 中指出srand(time(NULL)) 不好,因为srand 采用unsigned int,但对于Microsoft 的编译器,time_t 默认为64 位数字,因此会发生缩小转换。但是,time_t 是实现定义的。
既然我看到srand(time(NULL)) 如此流行(甚至在这个网站上),是否应该劝阻它?
【问题讨论】:
-
有更好的随机化方法,为什么不使用它们呢?
-
这是您在 C 甚至 C++ 98/03 中可以做到的最好的。 C++11 添加了新的
<random>标头,具有新的随机数生成功能,大大改善了这种情况。 -
@DavidHeffernan 请列举几个。
-
@user1095108 从
random标头中声明的功能开始 -
简短回答:在玩具程序中使用它,不要将它用于您要发布的任何内容或用于任何重要应用程序。