重み付き確率によるランダムな行選択
列 ID、内容、および重みを持つテーブルを考えると、タスクは行をランダムに選択することです。重量を考慮しながら。重みがそれぞれ 60、40、100 の 3 つの行が存在するシナリオでは、各行が選択される確率を次のように計算することが課題となります:
重み付きリザーバー サンプリング
この問題に対する最適なアプローチは、重み付きリザーバー サンプリングです。これにより、重みに比例した確率でアイテムを効果的に選択できます。これを適用する方法は次のとおりです:
SELECT id, -LOG(RAND()) / weight AS priority FROM your_table ORDER BY priority LIMIT 1;
この SQL クエリは次のロジックを使用します:
この重み付けされたリザーバー サンプリング手法を使用して、複数の行を選択できます。または、重み付けされた確率を使用してテーブル全体を表示することもできるため、さまざまなデータ選択シナリオに対応する多用途のソリューションとなります。
以上がSQL を使用して加重確率を使用してテーブルから行をランダムに選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。