1

ユーザーがコンテストにポイントを入力するクエリに取り組んでいます。彼らは持っている限り多くのポイントを入力できます。無作為に勝者を選ぶ必要がありますが、技術的には、より多くのポイントを入力した人が選ばれる可能性が高くなります。

私は現在、ランドとユーザーごとの合計ポイントの合計を使用してクエリをプルしています。

テーブル データは次のようになります。

fname lname user_id ポイント   
ジョン・ベイカー 1 300
ロバート・バックスター 2 40
ジェイソン・ドウ 3 900

クエリを複数回実行した場合、ジョンはロバートよりもチャンスがあり、ジェイソンはジョンとロバートの両方よりもチャンスがあります。

select * from table order by rand()

4

1 に答える 1

1

クエリ内ですべてを行うのは難しいでしょう。個人的には、バックエンドに少し依存します。しかし、MySQL 内ですべてを行う必要がある場合は、加重ランダム選択を探します。

この SO 投稿から、それについて説明しているこのブログ投稿を見つけました。

基本的に、RAND()関数と対数の組み合わせを使用して結果を達成します。私が知る限り、乗数を取得するには合計/平均を知る必要があるかもしれませんが、それはクエリでも実行できるはずです。

于 2013-10-18T01:43:27.980 に答える