問題:
MySQL テーブルに重みを割り当てる列 "Multiplier" が含まれていますエントリーに。タスクは、これらの重みを考慮しながらランダムなエントリを選択することです。
解決策:
RAND() はランダムなエントリの選択に役立ちますが、選択の重み付けには革新的な方法が必要です。アプローチ。答えは、重み付けのバランスを確保するためにテーブル設定を変更することです。
専門家によると、ORDER BY -LOG(1.0 - RAND()) / Multiplier を使用したクエリにより、重み付けされた選択が効果的に実現されます。この式の背後にある数学的理論的根拠はすぐにはわかりませんが、正確な結果が得られることが経験的に証明されています。
しかし、このアプローチには限界があります。エントリに重み 0 を割り当てて無効にすると、ゼロによる除算が行われます。この問題を回避するには、WHERE 句を利用して乗数が 0 より大きいエントリを除外します。
以上がMySQL で加重ランダム エントリを選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。