今回は、INSERTやUPDATE文を使用して、1つのカラムに、ランダムにいくつかのデータを入れる方法について解説します。
実際のコード
実際のコードは次のようになります。
UPDATE テーブル名
SET 対象カラム名 =
CASE
WHEN RAND()<0.1 THEN "APPLE"
WHEN RAND()<0.1 THEN "ORANGE"このように書くと、約10%のデータにAPPLEが入り、残りの約10%のデータにORANGEが入ります。
つまり、全体の約10%のデータにAPPLE、全体の約90%×10%=9%のデータにORANGEが入ることになります。
RAND()を2回使用していますが、1回目の判定と、2回目の判定では別の値となるので、注意が必要です。
同じ確率で設定する
すべてを同じ割合で設定したい場合、次のようになります。(xで設定したい場合)
UPDATE テーブル名
SET 対象カラム名 =
CASE
WHEN RAND()<x THEN "APPLE"
WHEN RAND()<x/(1-x) THEN "ORANGE"例えばすべて0.1…10%のデータに値を入れたい場合、0.1/(1-0.1)=0.1/0.9=0.11111…となるので、次のようになります。
UPDATE テーブル名
SET 対象カラム名 =
CASE
WHEN RAND()<0.1 THEN "APPLE"
WHEN RAND()<0.11111 THEN "ORANGE"もっといい方法
もっといい方法があったので、追記します。
UPDATE テーブル名
SET 対象カラム名 =
CASE floor(rand*10 + 1)
WHEN 1 THEN "APPLE"
WHEN 2 THEN "ORANGE"こうすると、初めに設定したランダム関数について条件を指定するため、条件ごとに値を変える必要がありません。
詳しく説明すると、floor(rand*10 + 1)で、1~10の値をランダムに作ります。そして、CASE文で、作成した値を条件に、文字列を登録します。
例えば、1/20の確率で値を入れたいときは、floor(rand*10 + 1)をfloor(rand*20 + 1)と書き換えればできます。
