• 締切済み

SQLite3にて重みづけを行った抽選のSQL

お世話になります。 前回の質問にて、説明不足でしたので、 改めて質問させていただきました。 ID,name,point 1.りんご.30 2.みかん.22 3.いちご.18 4.バナナ.13 5.すもも.4 6.マンゴー.1 上記のようなデータがある場合、pointが高いほど 選ばれ易くするような重みづけのある抽選のSQLを 記述したいのですが、その方法を お教えいただけないでしょうか。 データベースはSQLite3(必須)を使用しています。 使用する言語はJava、C#を検討していますが、 極力コードには依存せずに、SQLiteだけで 完結させたいと考えています。 サンプルなどを掲示していただけますと幸いです。 以上、よろしくお願いいたします。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

SQLiteの関数やフローの仕様がよくわかっていませんが CASE WHEN random()<=30/88 THEN 1 WHEN random()<=22/58 THEN 2 WHEN random()<=18/36 THEN 3 WHEN random()<=13/18 THEN 4 WHEN random()<=4/5 THEN 5 ELSE 6 END 的な処理をすればいいのでは?

tatapatank
質問者

補足

回答ありがとうございます。 処理の内容的には合っていると思います。 要は、SQLでできるように簡潔に済ませたかったのですが、 やはりSQLだけでは難しいようです。 ありがとうございました。