ホームページ > バックエンド開発 > 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート