2023年12月23日土曜日

SQLite3 指定した範囲からランダム値を取得する(random())

概要

SQLite3でランダム値を取得するにはrandom()関数を使用する。
範囲を指定するのであれば、指定したい範囲の「間隔」で割って、指定したい範囲の「最小値」を足せばいい。

構文


select abs(random()) % RANGE + MIN
                

実行例

指定した範囲内からランダム値を取得したい場合は剰余(割り算の余り)を使う。
例えば 0~4 の範囲からランダムに値を取得したい場合は 範囲 0,1,2,3,4 の個数 5 で割った余りを使う。


sqlite> select abs(random()) % 5;
1
sqlite> select abs(random()) % 5;
3
sqlite> select abs(random()) % 5;
3
sqlite> select abs(random()) % 5;
4
sqlite> select abs(random()) % 5;
2
sqlite> select abs(random()) % 5;
0
sqlite> select abs(random()) % 5;
2
                

1~5 の範囲からランダムに値を取得したい場合はこれに+1してやればいい。


sqlite> select abs(random()) % 5 + 1;
5
sqlite> select abs(random()) % 5 + 1;
1
sqlite> select abs(random()) % 5 + 1;
4
sqlite> select abs(random()) % 5 + 1;
1
sqlite> select abs(random()) % 5 + 1;
5
sqlite> select abs(random()) % 5 + 1;
2
sqlite> select abs(random()) % 5 + 1;
3
                

参考URL