我应该使用rand()还是rand_r()? 我试图在C++中得到一个随机数,我用的是这是说:
考虑使用我应该使用rand()还是rand_r()? 我试图在C++中得到一个随机数,我用的是这是说:,c++,cppcheck,cpplint,C++,Cppcheck,Cpplint,考虑使用rand\u r(…)而不是rand(…)来提高线程安全性 我正在切换到rand\u r,上面说: 调用了过时的函数“rand_r”。建议改用函数“rand” 谁是对的?两者都是 rand()函数是由C标准定义的,自1989/1990年第一个这样的标准以来就一直存在;它包含在C++标准中的引用。由于rand()依赖于状态,因此它不是线程安全的 rand\u r()函数是作为rand()的线程安全替代品而设计的。它不是由ISOC或C++标准定义的。它由POSIX.1-2001定义,但被PO
rand\u r(…)
而不是rand(…)
来提高线程安全性
我正在切换到rand\u r
,上面说:
调用了过时的函数“rand_r”。建议改用函数“rand”
谁是对的?两者都是
rand()
函数是由C标准定义的,自1989/1990年第一个这样的标准以来就一直存在;它包含在C++标准中的引用。由于rand()
依赖于状态,因此它不是线程安全的
rand\u r()
函数是作为rand()
的线程安全替代品而设计的。它不是由ISOC或C++标准定义的。它由POSIX.1-2001定义,但被POSIX.1-2008标记为已过时(这意味着它仍然由POSIX标准定义,但可能在未来版本中删除)
rand()
,因此rand\r()
的实现质量可能很低。还有更好的伪随机数生成器。对于C++,在C++ 11中添加了<代码> <代码>库,并提供了许多不同的选项。
如果您希望实现最大的可移植性,并且不太关心生成的数字的质量或可预测性,而且线程安全性也不是问题,那么可以使用srand()
和rand()
。否则,如果有可用的C++11实现,请使用
标题中定义的功能。否则,请参阅系统文档以了解其他伪随机数生成器
参考文献:,。使用C++11的
中的内容
由S.T.L.观看如果可能,请使用“新”设施<代码>兰德非常糟糕。值得注意的是,对于那些不能使用C++11但可以使用Boost的人来说,Boost中也存在C++11的随机性。