簡體   English   中英

如何設置隨機庫的范圍

[英]How can I set range to the random library

我真的不喜歡rand()函數。我想使用該庫,但我真的不知道如何設置范圍(例如1到3)。我想“隨機”這些數字(1,2 ,3),而不是像243245這樣的龐大數字。此代碼是您如何使用隨機庫並打印隨機數的方法

#include <iostream>
#include <string>
#include <random>
using namespace std;
int main()
{
    minstd_rand simple_rand;

    simple_rand.seed(NULL);

    for (int ii = 0; ii < 10; ++ii)
    {
        std::cout << simple_rand() << '\n';
    }
}

使用std::uniform_int_distribution

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

int main()
{
    std::mt19937 rng(std::time(0)); // `std::minstd_rand` would also work.
    std::uniform_int_distribution d(1,3);

    for (int i = 0; i < 10; i++)
    {
        std::cout << d(rng) << '\n';
    }
}
#include <iostream>
#include <random>
    int main()
    {
        std::random_device rd;  //Will be used to obtain a seed for the random number engine
        std::mt19937 gen(rd()); //Standard mersenne_twister_engine seeded with rd()
        std::uniform_int_distribution<> dis(1, 3);

        for (int n=0; n<10; ++n)
            //Use dis to transform the random unsigned int generated by gen into an int in [1, 6]
            std::cout << dis(gen) << ' ';
        std::cout << '\n';
    }

感謝@holyBlackCat致: cppreference.com

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM