c++ - 在 C++ 中获取均匀分布的随机整数的标准方法是什么?

标签 c++ random

有没有函数可以获取指定范围内均匀分布的伪随机整数?我可以使用 rand 编写自己的函数,但这似乎是一种很常见的情况,STL 中可能有适合它的东西。

最佳答案

Boost提供了许多随机数生成工具。 对于统一分布,你有这个:

http://www.boost.org/doc/libs/1_49_0/doc/html/boost/random/uniform_real_distribution.html

编辑:更新为包含新的 C++11 实现。对于整数的情况,这里有引用:

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

一个简单的例子是:

#include <random>
#include <iostream>
int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> dis(1, 6);
    for(int n=0; n<10; ++n)
        std::cout << dis(gen) << ' ';
    std::cout << '\n';
}

关于c++ - 在 C++ 中获取均匀分布的随机整数的标准方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10710840/

相关文章:

java - 唯一或不重复的随机数生成

c++ - 使用静态成员变量

c++ - 如何在c中给定毫秒后停止计时器

c++ - Cygwin GDB 在尝试启动程序时出现错误 193

c# - 如何创建一个非重复随机数数组

C++ : Seeding mt的低32位包含什么

c++ - 在cpp中围绕原点旋转一个点?

c++ - 如何将欧拉角转换为前、上、右 vector

random - 创建一个具有相同域和范围的随机双射函数

Haskell中的随机数列表