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
第二次我也得到了相同的输出.
那么它是如何随机的?
其他人已经解释了为什么每次都是相同的序列,但这就是你用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