如何在C ++中从列表/数组中随机选择一个数字?

时间:2019-11-10 19:48:33

标签: c++

尊敬的专家,             我有一个名为Dstr的向量,如果执行Dstr.size(),它将给我一个数组。我想从该Dstr / Dstr.size()中随机选择一个候选人。您能否建议我如何在c ++中做到这一点?

预先感谢 问候

3 个答案:

答案 0 :(得分:3)

要从向量中获取随机元素,可以使用std::sample

decltype(Dstr)::value_type element;
std::sample(Dstr.begin(), Dstr.end(), &element, 1, std::mt19937{std::random_device{}()});

需要C ++ 17。

答案 1 :(得分:1)

这是生成随机数的C ++方法。我假设您的数组/向量不为空

size_t random(size_t min, size_t max)
{
    static std::mt19937 randGen( std::random_device{}() );
    return std::uniform_int_distribution<size_t>(min, max)(randGen);
}
auto val = Dstr.at(random(0, Dstr.size() - 1));

答案 2 :(得分:-1)

自动候选= Dstr [rand()%Dstr.size()];