尊敬的专家, 我有一个名为Dstr的向量,如果执行Dstr.size(),它将给我一个数组。我想从该Dstr / Dstr.size()中随机选择一个候选人。您能否建议我如何在c ++中做到这一点?
预先感谢 问候
答案 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()];