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 サイトの他の関連記事を参照してください。