首頁 >後端開發 >C++ >如何在 C 中高效且可重複使用地打亂向量?

如何在 C 中高效且可重複使用地打亂向量?

Patricia Arquette
Patricia Arquette原創
2024-12-22 07:35:09394瀏覽

How Can I Efficiently and Reusably Shuffle Vectors in C  ?

C 語言中高效且可重用的向量改組

向量改組是各種程式設計任務中的常見操作。雖然有多種方法可以實現這一目標,但選擇一種可重複用於不同場景的通用且高效的方法至關重要。

在提供的程式碼片段中,目前的方法涉及建立一個中間數組並了解項目類型,這可能導致效率低下。使用 C 11 及更高版本提供了更有效率、可重複使用的解決方案。

使用 C 11 及更高版本

#include <algorithm>
#include <random>

auto rng = std::default_random_engine {};
std::shuffle(std::begin(cards_), std::end(cards_), rng);

此程式碼使用 std::shuffle 函數,這需要一個隨機引擎作為第三個參數。 std::default_random_engine 用於產生隨機數。透過使用此函數,我們可以在不建立中間數組或知道項目類型的情況下對元素進行隨機排列。

使用 C 98

對於 C 98,我們可以使用std::random_shuffle函數:

#include <algorithm>

std::random_shuffle(cards_.begin(), cards_.end());

播種隨機數引擎

為了每次產生不同的排列,我們可以使用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 中高效且可重複使用地打亂向量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn