[SQL Server] 1%(1/100)の確率で当たり(くじ)を作成しよう。イベント(キャンペーン)用。

inno
2016-08-16 12:34 1159 0
確率で当たりを出すイベント(キャンペーン)が色々なサイトでやっていますが、
その処理はどのようにするか説明したいと思います。

まず、「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

シンプルに作成してみました。
簡単でしょう?

コメント