我想知道为什么我不能在使用std::rand_r时使用cstdlib?或者,更一般地说,为什么某些函数在cstdlib全局命名空间中而不在std命名空间中?
rand_r 它不是标准的一部分,它是一种POSIX方法.
Run Code Online (Sandbox Code Playgroud)rand_r(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE符合
功能
rand()和srand()符合SVR4,4.3BSD,C89,C99,POSIX.1-2001.该功能rand_r()来自POSIX.1-2001.POSIX.1-2008标志rand_r()已过时.
更妙的是,忘了rand和rand_r,并使用std::mt19937与正确的分布(见图<random>).