簡體   English   中英

如何從 c++ 的列表/數組中隨機選擇一個數字?

[英]How to choose a number randomly from a list/Array in c++?

親愛的專家,我有一個名為 Dstr 的向量,如果我執行 Dstr.size(),它會給我一個數組。 我想從 Dstr/Dstr.size() 中隨機選擇一個候選人。 您能否建議我如何在 c++ 中做到這一點?

提前致謝 問候

要從向量中獲取隨機元素,可以使用std::sample

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

需要 C++17。

這是生成隨機數的 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));

自動候選 = Dstr[rand() % Dstr.size()];

暫無
暫無

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

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