C++中的Random()效率

esw*_*aat 0 c c++ linux random performance

我正在写函数,我需要找到1到10之间的随机数.最简单的方法之一是使用random()libc调用.我将使用这个功能很多.但我不知道它会有多高效.如果有人知道random()的效率会有帮助吗?

另外我注意到random()在2次运行中给出了相同的模式.

int main()
{
   for(int i=0;i<10;i++)
   {
    cout << random() % 10 << endl;     
   }
}
Run Code Online (Sandbox Code Playgroud)

输出第一次: - 3 6 7 5 3 5 6 2 9 1

第二次我也得到了相同的输出.

那么它是如何随机的?

Blo*_*lob 6

其他人已经解释了为什么每次都是相同的序列,但这就是你用C++生成随机数的方法:

#include <random>

int main() {
    std::random_device rd{}; //(hopefully) truly random device
    std::mt19937 engine{rd()}; //seed a pseudo rng with random_device
    std::uniform_int_distribution<int> d(1,10); //1 to 10, inclusive
    int RandNum = d(engine); //generate
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

http://en.cppreference.com/w/cpp/numeric/random