[英]Should I use rand() or rand_r()?
两者,都差不多。
rand()
函数是由 C 标准定义的,并且自 1989/1990 年第一个这样的标准以来一直存在; 它通过引用包含在 C++ 标准中。 由于rand()
取决于状态,因此它不是线程安全的。
rand_r()
函数被设计为rand()
的线程安全替代方案。 它不是由 ISO C 或 C++ 标准定义的。 它由 POSIX.1-2001 定义,但被 POSIX.1-2008 标记为过时(意味着它仍然由 POSIX 标准定义,但它可能在未来版本中被删除)。
rand()
实现,以及rand_r()
,可能是低质量的。 有更好的伪随机数生成器。 对于 C++, <random>
库是在 C++11 中添加的,并提供了许多不同的选项。
如果您想要最大的可移植性,并且不太关心生成数字的质量或可预测性,并且线程安全不是问题,则可以使用srand()
和rand()
。 否则,如果您有可用的 C++11 实现,请使用<random>
标头中定义的功能。 否则,请查阅系统文档以了解其他伪随机数生成器。
参考: POSIX , <random>
on cppreference.com 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.