首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中产生随机数的计算成本有多高?

在C++中产生随机数的计算成本有多高?
EN

Stack Overflow用户
提问于 2016-07-17 14:49:35
回答 1查看 2.7K关注 0票数 5

我正在考虑的方法是来自对…的回答

代码语言:javascript
复制
#include <random>

std::random_device rd;     // only used once to initialise (seed) engine
std::mt19937 rng(rd());    // random-number engine used (Mersenne-Twister in this case)
std::uniform_int_distribution<int> uni(min,max); // guaranteed unbiased

auto random_integer = uni(rng);

我也愿意在srand(time(NULL))中使用srand(time(NULL))方法。

这些方法有多贵?一个比另一个快得多吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-17 15:02:51

性能在很大程度上取决于您使用的生成器(这在很大程度上取决于所需数字的质量)。

例如,std::mt19937std::random_device快得多,但它产生伪随机数。如果您不需要密码安全的随机数,这在大多数情况下都是可以的。但是,即使您这样做了,random_device也可以在我的机器上以大约50 MB/秒的速度产生原始熵--您真正需要多少随机性?(如果需要的话,mt19937生成的数量级比这个大约多)。

避免rand()。只是它的性能很差,而且周期很短。

另见兰德被认为有害

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38422514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档