【发布时间】:2013-07-13 21:18:23
【问题描述】:
我在 C++11 中生成随机数。当我运行我的代码时
using namespace std;
static std::mt19937_64 rng;
int main() {
rng.seed(11);
std::cout << rng() << std::endl;
}
它返回随机数。但是,我想将其限制在一个数字范围内,比如 1-1000。我将如何使用 C++11 中引入的新 <random> 文件/库来做到这一点?
【问题讨论】:
-
使用模组运算符
% -
如果你想让它们均匀分布,en.cppreference.com/w/cpp/numeric/random/…。
-
@andre 不,模数运算符不会生成均匀分布的数字,请查看:cplusplus.com/reference/cstdlib/rand
-
试试this question——注意它是一种不同的语言,所以不是 dup(尽管这些答案会很好)。
-
%严格来说是不正确的,看到这一点,假设完整的范围是 [0, 100) 如果你想% 80这个范围内的随机数,结果将不再是一致的分布式。