首页 > 解决方案 > 如何在c ++中获取特定间隔内的随机数

问题描述

我需要特定间隔之间的数字。

# include<iostream>
# include<cstdlib>
# include<ctime>
using namespace std;

int main()
{
    srand(time(0));

    for (int x = 1; x<=10; x++)
    {
        cout<<  15+ (rand()% 20)   <<endl;

    }
}

我预计输出在 15 到 20 之间,如 [15,20],但我总是得到输出 > 或 <,而不是在确切的间隔内。

标签: c++randomnumbers

解决方案


自该语言的 2011 版本以来,有一个名为 的类std::uniform_int_distribution,但我认为它不适用于rand(),因此您必须使用新的伪随机生成器之一,例如std::mt19937

# include<random>
# include<iostream>
# include<ctime>

using namespace std;

int main()
{
    uniform_int_distribution<> dis(15, 20);
    mt19937 gen(time(0));

    for (int x = 1; x<=10; x++)
    {
        cout<<  dis(gen)   <<endl;

    }
}

推荐阅读