为什么rand_r没有在std中定义?

Luc*_*cas 2 c++ random std

我想知道为什么我不能在使用std::rand_r时使用cstdlib?或者,更一般地说,为什么某些函数在cstdlib全局命名空间中而不在std命名空间中?

Zet*_*eta 6

rand_r 它不是标准的一部分,它是一种POSIX方法.

rand_r(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE 
Run Code Online (Sandbox Code Playgroud)

符合

功能rand()srand()符合SVR4,4.3BSD,C89,C99,POSIX.1-2001.该功能rand_r()来自POSIX.1-2001.POSIX.1-2008标志rand_r()已过时.

更妙的是,忘了randrand_r,并使用std::mt19937与正确的分布(见图<random>).