ホームページ  >  記事  >  バックエンド開発  >  置換ありまたはなしで重み付きランダム選択を実装するにはどうすればよいでしょうか?

置換ありまたはなしで重み付きランダム選択を実装するにはどうすればよいでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-24 16:00:03237ブラウズ

How Can We Implement Weighted Random Selection with and Without Replacement?

置換ありおよび置換なしの重み付きランダム選択: 包括的なガイド

特定の重みを使用してリストから要素を選択することは、さまざまな場面で貴重なテクニックとなります。アプリケーション。置換を行わない重み付き選択には十分に確立されたアルゴリズムがありますが、置換を伴う要素の選択には別の課題が生じます。

置換を伴う重み付き選択の効率的な方法の 1 つは、エイリアス メソッドです。合計が 1.0 になるように重みを正規化し、選択肢の数より大きい 2 の最小累乗を見つけることにより、変数ごとにパーティションを作成できます。このメソッドは、必要に応じて元のパーティションから残りの重みを割り当てながら、最小および最大の重み付けされた変数をパーティションに繰り返し埋め込みます。

実行時に一様乱数が生成され、そのバイナリ表現が次の対数によってシフトされます。パーティションの数。選択したパーティションのインデックスは、シフトされた番号によって決定されます。パーティションが分割されている場合、シフトされた乱数の小数部分によって、そのパーティションに割り当てられた 2 つの変数間の選択が決まります。

エイリアス法は、単純な代数演算と定数時間に依存するため、その効率性で知られています。インデックス作成。これにより、リストのかなりの部分を選択する必要がある場合でも効率的に選択できるため、置換を伴う重み付きランダム選択が必要なさまざまなシナリオに適した選択肢となります。

以上が置換ありまたはなしで重み付きランダム選択を実装するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。