確率で当たりを出すイベント(キャンペーン)が色々なサイトでやっていますが、
その処理はどのようにするか説明したいと思います。
まず、「1~100」間の数字をランダムで発生するSQLを作成します。
SELECT CONVERT(int, (RAND()*100))+1
このまま実行してみてください。
その結果を見た方が理解するのが早いと思います。
このシンプルなSQLを利用して1%(1/100)の確率でイベント(キャンペーン)をする時に使うことができます。
例えば、0.1%(1/1000)の確率にしたい場合は下記のように作成します。
SELECT CONVERT(int, (RAND()*1000))+1
100になっていた部分を1000に変えるだけで確率を変更できます。
それでは1%(1/100)確率で当たる処理をするSQLを作成してみましょう。
IF (1 = (CONVERT(int, (RAND()*100))+1))
BEGIN
SELECT N'当たり'
END
ELSE
BEGIN
SELECT N'はずれ'
END
当たりの確率が6%(6/100)にするとSQLは下記のように作成します。
IF (6 >= (CONVERT(int, (RAND()*100))+1))
BEGIN
SELECT N'当たり'
END
ELSE
BEGIN
SELECT N'はずれ'
END
シンプルに作成してみました。
簡単でしょう?