ホームページ  >  記事  >  バックエンド開発  >  MySQL で加重ランダム選択を実装するにはどうすればよいですか?

MySQL で加重ランダム選択を実装するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-09 20:25:02914ブラウズ

How to Implement Weighted Random Selection in MySQL?

MySQL での加重ランダム選択

ユーザーは、MySQL テーブルから「Multiplier」列に従って重み付けされたランダム エントリを取得しようとします。乗数 0 は重み付けがないことを示し、値が大きいほど選択の可能性が高くなります。

SELECT と RAND() を使用する元のクエリには重み付けを実装する機能がありません。この制限を克服するために、別のアプローチが特定されました。

ORDER BY -LOG(1.0 - RAND()) / Multiplier

この式は、より高い乗数を持つエントリにより高いランダム値を効果的に割り当てます。乗数を 0 に設定すると、ゼロ除算エラーが発生するため、0 に設定できないことに注意することが重要です。乗数が 0 のエントリを除外するには、WHERE 句を適用できます。

WHERE Multiplier > 0

これらの要素を組み合わせることで、次のクエリは重み付けされたランダム選択を実現します。

SELECT *
FROM table
WHERE Multiplier > 0
ORDER BY -LOG(1.0 - RAND()) / Multiplier
LIMIT 1

この式により、次のことが保証されます。ランダム選択プロセスの完全性を維持しながら、より高い乗数を持つエントリが選択される可能性が高くなります。

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

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