MySQL での重み付けされた結果によるランダム選択
この問題には、行が「」に基づいて重み付けされる MySQL テーブルからのランダムなエントリの選択が含まれます。乗数」列。 RAND() を使用する従来のアプローチでは、この重み付けが考慮されていません。
これに対処するために、ユーザーは ORDER BY -LOG(1.0 - RAND()) / Multiplier を使用するアプローチを提案しました。この数式は、ランダム化プロセスを効果的に調整して、重み付けされた行が選択される確率を高くします。
この数式は、各行の「ランダム性」を表す値を計算します。値が低いほど、確率が高いことを示します。この値を「乗数」で割ることにより、より高い乗数を持つ行には事実上、より低い「ランダム性」が与えられ、選択される可能性が高くなります。
この方法の欠点は、無効にすることができないことです。乗数を 0 に設定すると行がゼロで除算されるためです。ただし、この制限は、WHERE Multiplier > を使用して行をフィルタリングすることで克服できます。 0 乗数がゼロのものを除外します。
以上がMySQL で重み付けされたランダムな行を選択するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。