ホームページ  >  記事  >  バックエンド開発  >  Go で短い配列の出力順序をランダム化するアルゴリズム

Go で短い配列の出力順序をランダム化するアルゴリズム

WBOY
WBOY転載
2024-02-15 12:57:08724ブラウズ

Go 中短数组的输出顺序随机化的算法

php エディター Xiaoxin は、Go 言語で短い配列の出力順序をランダム化するアルゴリズムに関する記事を提供します。 Go 言語では、Go 言語の並行性の特性により、短い配列の出力順序は未定義です。この記事では、短い配列の出力順序をランダム化できる乱数ジェネレーターに基づくアルゴリズムを紹介します。これにより、プログラムが実行されるたびに出力順序が変わり、プログラムの柔軟性と可変性が向上します。この記事を読むことで、読者は Go 言語で短い配列の出力順序をランダム化する方法を学び、それを自分のプロジェクトに適用することができます。

質問の内容

この質問と多数の重複回答の主な違いは、入力配列が短く、要素が 3 つしかないことです。 --

int の順序付きセットがあるとします。配列のサイズはわずか 3 (またはそれ以上) です。順序をランダム化し、新しい配列を返す必要があります。これは純粋なアルゴリズムに関する質問ですが、推奨される回答言語は go です。

  • Python を使用して、リストをランダムな順序で出力するにはどうすればよいですか?答えは random.shuffle です。
  • go を使用すると、https://yourbasic.org/golang/shuffle-slice-array/ となり、答えは rand.shuffle となるはずです。

ただし、これは私のコードです:

https://go.dev/play/p/cvu8_q96-9f

リーリー

これは私のテスト実行の結果の 1 つです:

リーリー

これはあまりランダムではないようです。

短い 3 要素配列のランダム化を改善するための良いアイデアはありますか?

###ところで、###

vhdl を使用して配列要素をランダムな順序で出力する方法には、線形フィードバック シフト レジスタを使用するよう記載されていますが、この問題にはそれは良いアイデアではないと思います。
  • JavaScript 配列をランダム化 (シャッフル) するにはどうすればよいですか? durstenfeld のシャッフル アルゴリズムの最適化されたバージョン、fisher-yates が提供されていますが、その結果は go の
  • rand.shuffle
  • と非常に似ていると思います。うん?
解決策

random.seed

をランダム再生関数からメイン関数に移動します。 prng はプログラムごとに 1 回だけシードでき、ランダム性の模倣はシードではなくジェネレーターの状態遷移を通じて行われます。 prng の仕組みをよく理解し、再現性などの理由からプロセスを明示的に制御しようとする場合を除いて、再シードしないでください。 ニーズに合わせてコードに次の簡単な変更を加えます:

リーリー

これにより、次の結果が生成されます:

リーリー

以上がGo で短い配列の出力順序をランダム化するアルゴリズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。