問題タブ [shuffle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - IComparer を使用したシャッフル
まず、フィッシャー・イェーツ・シャッフルについて知っています。しかし、引数のために、ユーザーがドロップダウン リストから並べ替えオプションを選択できるようにしたいとしましょう。このリストには、「ランダム」オプションが含まれます。彼らの選択の結果に基づいて、ソートを IComparer インスタンスに置き換えたいだけです。IComparer はどのように見えるでしょうか?
Google は多くの欠陥のある結果を表示しますが、これらはすべて次の形式を取ります。
ただし、その実装には偏りがあり、状況によっては例外をスローすることさえあります。バイアスは、次のコードで実証できます。
IComparer<T>
では、これらの問題を解決するランダムをどのように実装できるのでしょうか? .Sort()
これを行う他の方法が見当たらないため、各呼び出しで個別の IComparer インスタンスを使用するように要求することが許可されています。特定のソート操作内。
私はここから始めましたが、急いで投稿され、非常に遅く、可能なすべてのソートを返すことさえありません(テストでは、欠落しているオプションを数えなければ、少なくともバイアスを排除することが示されています)。Fisher-Yates のような O(n) のパフォーマンスは期待していませんが、合理的なもの (小さな n に対して n log n) が必要であり、考えられるすべての並べ替えが表示されることを期待しています。残念ながら、そのリンクはその質問に対する現在受け入れられている回答であるため、もう少し良いものに置き換えることができることを望んでいます。
他に何もないとしても、これが IComparable ソリューションを探しているすべての Google クエリの磁石になることを望んでいます。つまり、間違ったバージョンを使用するように他の場所に指示するのではなく、ここに行き着くということです。
random - 256個のランダムビットで数値を生成する最良の方法は?
256個のランダムビットで数値を生成する最良の方法は何ですか?
ランダムバイトの連結は機能しますか?
さらに、これらの番号の重複しないものを使用してカードのデッキを並べ替えることは適切でしょうか?
bit-manipulation - ビットいじり並べ替え
7ビット値の任意の並べ替えを行う必要があり(はい、テーブルを使用する必要があることはわかっています)、これを行うためのビットハックがあるかどうか疑問に思っています。
例:
編集:私はこれ に沿って何かを考えていました
キックのために、私は AFTK だったので、次の形式のソリューションを力ずくで検索しようとしています。
解決策が見つかりません。
javascript - 配列内の要素をランダム化しますか?
私は私の友人のアーティストのためにサイトを作成しました。彼女はレイアウトを同じに保ちたいと思っていますが、彼女はまた、彼女が作成した新しい絵画を現在のレイアウトに混ぜたいと思っています。したがって、メインギャラリーページに12個のサムネイル(thumb1-thumb12)があり、18個の画像(img1-img18)も配置します。
私が考えたアプローチは、すべての画像の配列を作成し、それをランダム化してから、最初の12枚を削り取り、サムスロットにロードすることでした。別のアプローチは、アレイからランダムに12枚の画像を選択することです。最初のケースでは、配列の要素をランダム化する方法を見つけることができません。後者の場合、非常に非効率的で恐ろしいように見える2番目の配列を使用する以外に、画像が2回以上読み込まれないようにする方法に頭を悩ませることはできません。
ちなみに、私はこれらすべてをJavascriptで行っています。
algorithm - この単純なシャッフル アルゴリズムが偏った結果を生成するのはなぜですか? 簡単な理由とは?
この単純なシャッフル アルゴリズムでは偏った結果が生成されるようです。
試してみてください... 52 を使用する代わりに 3 を使用し (3 枚のカードのみを使用すると仮定)、10,000 回実行して結果を集計すると、結果が特定のパターンに偏っていることがわかります...
問題は...それが起こるという簡単な説明は何ですか?
正しい解決策は、次のようなものを使用することです
しかし問題は...なぜ最初の方法も完全にランダムに見えるのに、結果が偏ってしまうのでしょうか?
更新 1:正しくシャッフルするには rand($i, 51) である必要があると指摘してくださった方々に感謝します。
linux - Red Hat Linux の標準ツールを使用して、ファイル内の行をランダム化するにはどうすればよいですか?
Red Hat Linux の標準ツールを使用して、ファイル内の行をランダム化するにはどうすればよいですか?
私はコマンドを持っていないので、同じタスクを達成する aまたはワンライナーshuf
のようなものを探しています。perl
awk
javascript - シャッフルに JavaScript Array.sort() メソッドを使用するのは正しいですか?
私は誰かの JavaScript コードを手伝っていたのですが、次のようなセクションに目が留まりました。
私の最初のことは、ねえ、これはおそらくうまくいかないということでした! しかし、その後、いくつかの実験を行ったところ、実際には少なくとも適切にランダム化された結果が得られるように見えることがわかりました.
次に、いくつかの Web 検索を行ったところ、ほぼ一番上に、このコードが最も確実にコピーされた記事が見つかりました。かなり立派なサイトと著者のように見えました...
しかし、私の直感は、これは間違っているに違いないと教えてくれます。特に、並べ替えアルゴリズムは ECMA 標準で指定されていないためです。ソートアルゴリズムが異なると、異なる不均一なシャッフルが発生すると思います。一部の並べ替えアルゴリズムは、おそらく無限にループすることさえあります...
しかし、あなたはどう思いますか?
もう 1 つの質問として、このシャッフル手法の結果がどの程度ランダムであるかを測定するにはどうすればよいでしょうか?
更新:いくつかの測定を行い、回答の 1 つとして結果を以下に投稿しました。
python - オブジェクトのリストをシャッフルする
オブジェクトのリストがあり、それらをシャッフルしたいと考えています。メソッドが使えると思っrandom.shuffle
たのですが、リストがオブジェクトの場合に失敗するようです。オブジェクトをシャッフルする方法、またはこれを回避する別の方法はありますか?
これは失敗します。
c# - C# でのカード シャッフル
カードのデッキの内容をリストし、デッキをシャッフルしたい回数を尋ねてからシャッフルするプロジェクトのコードを書こうとしています。System.Random クラスを使用して 2 つの乱数整数を作成するメソッドを使用する必要があります。
これらは私のクラスです:
Program.cs:
Deck.cs:
Enums.cs:
Card.cs:
カードを好きなだけシャッフルする方法とシャッフルしたカードのリストを教えてください。