首頁 > 後端開發 > C++ > 如何在 C 中有效地洗牌 std::vector ?

如何在 C 中有效地洗牌 std::vector ?

Barbara Streisand
發布: 2024-12-30 19:23:14
原創
310 人瀏覽過

How Can I Efficiently Shuffle a std::vector in C  ?

std::vector 的高效洗牌

當洗牌 std::vector 時,效率起著至關重要的作用。提供的使用中間數組和特定於類型的知識的方法並不是最佳的。

現代C 方法

在C 11 及更高版本中,可以使用更有效的方法:

#include <algorithm>
#include <random>

auto rng = std::default_random_engine {};
std::shuffle(std::begin(cards_), std::end(cards_), rng);
登入後複製

此方法利用std ::shuffle 函數,可以有效地隨機化元素。請記住在多個 std::shuffle 呼叫中重複使用 rng 實例,以實現一致的隨機化。

個人化洗牌

如果您希望在程式執行中獲得不同的隨機序列,請播種隨機序列輸出為std::random_device:

auto rd = std::random_device {};
auto rng = std::default_random_engine { rd() };
std::shuffle(std::begin(cards_), std::end(cards_), rng);
登入後複製

C 的引擎98方法

對於 C 98,std::random_shuffle 函數仍然適用:

#include <algorithm>

std::random_shuffle(cards_.begin(), cards_.end());
登入後複製

以上是如何在 C 中有效地洗牌 std::vector ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板