在 MariaDB 中生成随机数

本文讨论如何在 MariaDB 中使用 RAND() 函数生成随机数。

发布于

MariaDB 提供了一个 RAND() 函数用于生成 0 (包含) 和 1 (不包含) 之间的随机数。

通常,我们需要生成两个指定的数之间的随机数或者随机整数。我们可以利用数据表达式做到这一点。

公式

如果你想返回介于 mn 之间随机数,请使用以下公式:

  • mn 之间的随机数: RAND() * (n - m) + m
  • mn 之间的随机整数: FLOOR(RAND() * (n - m + 1) + m)

这里,我们用到了另外一个数学函数 FLOOR(),此函数返回小于或等于指定数字的最大整数值。

下面有几个使用 RAND() 函数生成随机数的示例。

示例 1:生成一个 0 和 1 之间的随机数

要生成 0 和 1 之间的随机数,请直接使用 RAND(),如下:

SELECT
  RAND() rand1,
  RAND() rand2,
  RAND() rand3,
  RAND() rand4;

输出:

+--------------------+---------------------+--------------------+--------------------+
| rand1              | rand2               | rand3              | rand4              |
+--------------------+---------------------+--------------------+--------------------+
| 0.6890435821274702 | 0.16652111910890893 | 0.7654748798957792 | 0.3278110728858142 |
+--------------------+---------------------+--------------------+--------------------+
1 row in set (0.000 sec)

示例 2:生成介于 10 和 20 之间的随机数

下面的语句生成 4 个介于 10 和 20 之间的随机数:

SELECT
  RAND() * (20 - 10) + 10 rand1,
  RAND() * (20 - 10) + 10 rand2,
  RAND() * (20 - 10) + 10 rand3,
  RAND() * (20 - 10) + 10 rand4;

输出:

+--------------------+--------------------+--------------------+--------------------+
| rand1              | rand2              | rand3              | rand4              |
+--------------------+--------------------+--------------------+--------------------+
| 13.426307554753784 | 17.297205894530943 | 16.207107115729812 | 19.143918202392683 |
+--------------------+--------------------+--------------------+--------------------+
1 row in set (0.002 sec)

示例 3:生成介于 10 和 20 之间的随机整数

下面的语句生成 4 个介于 10 和 20 之间的随机整数:

SELECT
  FLOOR(RAND() * (20 - 10 + 1) + 10) rand1,
  FLOOR(RAND() * (20 - 10 + 1) + 10) rand2,
  FLOOR(RAND() * (20 - 10 + 1) + 10) rand3,
  FLOOR(RAND() * (20 - 10 + 1) + 10) rand4;

输出:

+-------+-------+-------+-------+
| rand1 | rand2 | rand3 | rand4 |
+-------+-------+-------+-------+
|    17 |    18 |    19 |    10 |
+-------+-------+-------+-------+
1 row in set (0.001 sec)

结论

本文讨论了如何在 MariaDB 中使用 RAND() 函数生成随机数。