[解決済み] C#でList<T>からN個のランダムな要素を選択する
2022-04-15 07:24:23
質問
一般的なリストから5つのランダムな要素を選択する素早いアルゴリズムが必要です。例えば、私は、5つのランダムな要素を
List<string>
.
解決方法は?
繰り返し処理を行い、各要素について、選択される確率=(必要数)/(残り数)とする。
つまり、40個のアイテムがあった場合、最初のアイテムが選択される確率は5/40となります。もしそうなら、次は4/39の確率で、そうでなければ5/39の確率で選ばれます。最後まで行くと、5つのアイテムが揃うことになりますが、多くの場合、その前にすべてのアイテムが揃っているはずです。
この技法は セレクションサンプリング の特殊なケースです。 リザーバーサンプリング . 入力のシャッフルに似た性能ですが、もちろん元のデータを変更することなくサンプルを生成することができます。
関連
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み] JavaScriptでランダムな文字列/文字を生成する
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] 乱数(int)を生成する方法を教えてください。
-
[解決済み] リストからランダムに項目を選択するにはどうすればよいですか?
-
[解決済み] ゲーム「2048」の最適なアルゴリズムとは?
-
[解決済み] 英数字のランダムな文字列を生成する方法
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] リスト<T>をランダム化する
-
[解決済み】JavaScriptで配列の要素を削除する - delete vs splice
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み] リスト<T>をランダム化する