смена диапазона для random

как можно установить новый диапазон для distribution после установки в конструкторе или нужно все таки создавать новую переменную?

#include <random>
std::default_random_engine generator;
std::uniform_int_distribution<int> distribution(1,6);

Ответы (1 шт):

Автор решения: Maggot

Вы можете просто обновить его используя метод param - https://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution/param и отдать туда новый класс с новым распределением!

      dis.param(std::uniform_int_distribution<int>::param_type(7, 10));

Вот пример кода :

#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';

    dis.param(std::uniform_int_distribution<int>::param_type(7, 10));

    for (int n=0; n<10; ++n)
        std::cout << dis(gen) << ' ';
    std::cout << '\n';

    return 0;
}
→ Ссылка