SQLite random()
関数は、-9223372036854775808と+9223372036854775807の間の疑似乱数整数を返します。
疑似乱数は、ランダムに見えるが、真にランダムではない数です。疑似乱数は、その値が既知のシードによって生成されたため、真にランダムではありません。ただし、ユーザーがそれを作成したシードまたはアルゴリズムの知識がない場合、疑似乱数はランダムに見えます。
したがって、多くのアプリケーションでは、疑似乱数で十分と見なされることがよくあります。
例
random()
を使用して疑似乱数を生成する例を次に示します。 機能。
SELECT random();
結果:
-882536775989953141
正の値のみ
random()
を組み合わせることができます abs()
を使用 正の値のみを生成します。
SELECT abs(random());
この場合、random()
の場合 負の値abs()
を生成します 代わりに絶対値を返します。
abs()
の方法を示すため 動作します。最初の例の(負の)ランダムな数値をabs()
に渡すとどうなりますか。 機能:
SELECT abs(-882536775989953141);
結果:
882536775989953141
したがって、random()
を渡すと abs()
へ 、およびrandom()
負の値abs()
を生成します その値を正の値として返します。
0から100までの値
0〜100の正の数を生成する例を次に示します。
SELECT abs(random() % 100);
複数のランダムな値を選択する例を次に示します。
SELECT
abs(random() % 100) AS R1,
abs(random() % 100) AS R2,
abs(random() % 100) AS R3;
結果:
R1 R2 R3 ---------- ---------- ---------- 17 79 90
ランダム行を返す
random()
を使用できます ORDER BY
で ランダムな行を返すデータベースクエリの句。
これが例です。
SELECT * FROM Artist
ORDER BY random() LIMIT 5;
結果:
ArtistId Name ---------- ---------------------------------------- 131 Smashing Pumpkins 127 Red Hot Chili Peppers 169 Black Eyed Peas 60 Santana Feat. Dave Matthews 240 Gustav Mahler
そして、もう一度実行すると、次のようになります。
ArtistId Name ---------- ---------------------------------------- 234 Orchestra of The Age of Enlightenment 126 Raul Seixas 76 Creedence Clearwater Revival 182 Nega Gizza 63 Santana Feat. Lauryn Hill & Cee-Lo
テーブルが大きい場合は、クエリを次のように変更することをお勧めします。
SELECT * FROM Artist
WHERE ArtistId IN
(SELECT ArtistId FROM Artist ORDER BY random() LIMIT 5);
結果:
ArtistId Name ---------- ---------------------------------------- 45 Sandra De Sá 105 Men At Work 110 Nirvana 205 Chris Cornell 267 Göteborgs Symfoniker & Neeme Järvi