【发布时间】:2015-03-31 01:44:04
【问题描述】:
我正在编写函数,我需要找到 1 - 10 之间的随机数。最简单的方法之一是使用 random() libc 调用。我会经常使用这个功能。但我不知道它的效率如何。如果有人知道 random() 的效率会有所帮助吗?
我还注意到 random() 在 2 次运行中给出了相同的模式。
int main()
{
for(int i=0;i<10;i++)
{
cout << random() % 10 << endl;
}
}
第一次输出:- 3 6 7 5 3 5 6 2 9 1
第二次我也得到了同样的输出。
那怎么是随机的呢?
【问题讨论】:
-
如果您担心性能,请使用分析器。如果你用相同的种子运行随机化器,它总是会给出相同的输出。
-
实际上我使用了 Linux perf 但它没有显示任何东西(比如它在哪里消耗时间)。它只是显示它消耗了多少 CPU 周期,大约占总 CPU 的 1.73%。
-
“性能”中的“效率”或“随机数有多好”中的“效率”?后者显然是“您需要使用 srand()”[或类似的] 在不同点开始随机数序列的情况。 “好”的随机数不是微不足道的,所以如果你需要真正好的随机数,你可能需要进一步的工作 [e.g.可预测性成为问题的游戏,或将数字用于重要分布的科学目的]
-
否定标记的任何原因。
标签: c++ c linux performance random