sql >> データベース >  >> RDS >> MariaDB

MariaDBの範囲内でランダムな整数を生成する方法

    MariaDBにはRAND()が含まれています ランダムな数値を返す関数。より正確には、DOUBLEを返します 高精度浮動小数点値v 0 <= v < 1.0の範囲 。

    これは素晴らしいことですが、より広い範囲内の整数を生成したい場合、そして指定した範囲を生成したい場合はどうでしょうか?

    幸い、これを行うための簡単なテクニックがあります。

    テクニック

    特定の範囲内のランダムな整数を返すための鍵は、次の構文にあります。

    FLOOR(min_value + RAND() * (max_value - min_value +1))

    これはFLOOR()を使用します 引数以下の最大の整数値を返す関数。 RAND()として見る 関数は引数の一部です。必要な最小および最大のランダム値を指定するために、さらにいくつかの計算を適用するだけです。

    1〜10のランダムな整数を生成します

    したがって、上記の構文を使用して、1〜10のランダムな整数を生成する例を次に示します。

    SELECT FLOOR(1 + RAND() * (10 - 1 +1));

    結果:

    +---------------------------------+
    | FLOOR(1 + RAND() * (10 - 1 +1)) |
    +---------------------------------+
    |                               7 |
    +---------------------------------+

    ランダム効果を確認するために、もう少し呼びましょう:

    SELECT 
        FLOOR(1 + RAND() * (10 - 1 +1)) AS r1,
        FLOOR(1 + RAND() * (10 - 1 +1)) AS r2,
        FLOOR(1 + RAND() * (10 - 1 +1)) AS r3,
        FLOOR(1 + RAND() * (10 - 1 +1)) AS r4,
        FLOOR(1 + RAND() * (10 - 1 +1)) AS r5,
        FLOOR(1 + RAND() * (10 - 1 +1)) AS r6,
        FLOOR(1 + RAND() * (10 - 1 +1)) AS r7,
        FLOOR(1 + RAND() * (10 - 1 +1)) AS r8;

    結果:

    +----+----+----+----+----+----+----+----+
    | r1 | r2 | r3 | r4 | r5 | r6 | r7 | r8 |
    +----+----+----+----+----+----+----+----+
    |  3 |  6 | 10 |  4 |  6 | 10 |  1 |  6 |
    +----+----+----+----+----+----+----+----+

    1〜100のランダムな整数を生成します

    1から100までのランダムな数値を生成するには、10を100に置き換えるだけです。

    SELECT FLOOR(1 + RAND() * (100 - 1 +1));

    結果:

    +----------------------------------+
    | FLOOR(1 + RAND() * (100 - 1 +1)) |
    +----------------------------------+
    |                               87 |
    +----------------------------------+

    ランダム効果を確認するために、もう少し呼びましょう:

    SELECT 
        FLOOR(1 + RAND() * (100 - 1 +1)) AS r1,
        FLOOR(1 + RAND() * (100 - 1 +1)) AS r2,
        FLOOR(1 + RAND() * (100 - 1 +1)) AS r3,
        FLOOR(1 + RAND() * (100 - 1 +1)) AS r4,
        FLOOR(1 + RAND() * (100 - 1 +1)) AS r5,
        FLOOR(1 + RAND() * (100 - 1 +1)) AS r6,
        FLOOR(1 + RAND() * (100 - 1 +1)) AS r7,
        FLOOR(1 + RAND() * (100 - 1 +1)) AS r8;

    結果:

    +----+----+----+----+----+----+----+----+
    | r1 | r2 | r3 | r4 | r5 | r6 | r7 | r8 |
    +----+----+----+----+----+----+----+----+
    | 61 | 45 | 41 | 68 | 19 | 92 | 99 | 18 |
    +----+----+----+----+----+----+----+----+

    10000〜50000のランダムな整数を生成します

    もう1つやってみましょう。今回は、10000〜50000のランダムな数字を生成します。

    SELECT FLOOR(10000 + RAND() * (50000 - 10000 +1));

    結果:

    +--------------------------------------------+
    | FLOOR(10000 + RAND() * (50000 - 10000 +1)) |
    +--------------------------------------------+
    |                                      46884 |
    +--------------------------------------------+

    そして、ランダム効果を確認するためのいくつかの呼び出し:

    SELECT 
        FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r1,
        FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r2,
        FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r3,
        FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r4,
        FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r5,
        FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r6,
        FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r7,
        FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r8;

    結果:

    +-------+-------+-------+-------+-------+-------+-------+-------+
    | r1    | r2    | r3    | r4    | r5    | r6    | r7    | r8    |
    +-------+-------+-------+-------+-------+-------+-------+-------+
    | 13688 | 37790 | 17884 | 46052 | 46608 | 44880 | 34578 | 28249 |
    +-------+-------+-------+-------+-------+-------+-------+-------+

    1. Postgresジオメトリ形式をWKTに変換します

    2. OracleStreamsで伝搬を常に有効に保つ

    3. Nvarchar(Max)の場合、TSQLで4000文字しか取得できませんか?

    4. MySQLで列のパーセンテージを計算する方法