MySQL intレコードにランダム整数を一括挿入してみた

mysql_int_random
MySQLのテーブル hoge の intカラム test に10までの整数をランダムに挿入してみました。
範囲指定や上限の変更も簡単だったので、再配置や振り分けで使える予感。
ちょっとした算数を用いれば、好みの範囲での指定も簡単ですよ。

SPONSORED LINK

RAND関数を使う

素敵な一行です。

UPDATE hoge SET test = ROUND(RAND()*10)

まず、RAND()関数で 0~1.0 の範囲の小数乱数を作成します。
実際には「0.1423…」「0.5761…」「0.9871…」といった数値が乱数で作られます。

それを10倍して整数化していきます。
「1.423…」「5.761…」「9.871…」といった感じに。

さらにROUND()関数を使用して小数点以下を丸めてint型に合わせます。
ROUND関数は四捨五入なので、
「1」「6」「10」

結果的にMySQLカラムtestには0~10までのランダムな整数が挿入されます。

最小値を1にしてみる

ちなみに0~ではなく、1~とする場合には、

ROUND(1+RAND()*9)

このような式が出来上がります。

なぜ9倍か?
必ず+1されるので、生成する乱数はMAX9でないと1~10に収まらないからですね。

では、5~20のランダム整数ならどうなるでしょうか?
という算数ですね。
一年に一回は使いたくなりそうなのでメモ!

SPONSORED LINK

コメント

  1. 匿名 より:

    最後の式で10が出力されることはありますか?

トップへ戻る