根据官方文档,rand()的取值范围为[0,1)

若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1))

例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机整数, 可使用以下语句:

SELECT FLOOR(7 + (RAND() * 6));

另外,也可以用round四舍五入函数来实现,考虑到最前与最后的取值概率会与中间的不相等,故加上0.5来消除这种概率上的差异,达到均匀分布:

产生[i,j]范围正整数:select round(rand()*(j-i+1)+i-0.5)

若要在7 到 12 的范围(包括7和12)内得到一个随机整数, 可使用以下语句:

SELECT round( (RAND() * 6+6.5));

如果产生负整数的话得注意最左边的值有可能会超过你的要求:

mysql> SELECT round(-0.5);

+-------------+

| round(-0.5) |

+-------------+

| -1 |

+-------------+

1 row in set (0.00sec)

mysql> SELECT round(-0.4);

+-------------+

| round(-0.4) |

+-------------+

| 0 |

+-------------+

1 row in set (0.00 sec)

可以在产生正整数的情况下再减去一个相应的值,得到一个负整数范围,不过用floor函数可以避免上面的问题。

在Mysql中可以执行如下命令查看某个主题的说明文档,即? 主题,如下:

mysql> ? rand

Name: 'RAND'

Description:

Syntax:

RAND(), RAND(N)

Returns a random floating-point value v in the range 0 <= v < 1.0. If a

constant integer argument N is specified, it is used as the seed value,

which produces a repeatable sequence of column values. In the following

example, note that the sequences of values produced by RAND(3) is the

same both places where it occurs.

URL: http://dev.mysql.com/doc/refman/5.6/en/mathematical-functions.html

Examples:

mysql> CREATE TABLE t (i INT);

Query OK, 0 rows affected (0.42 sec)

mysql> INSERT INTO t VALUES(1),(2),(3);

Query OK, 3 rows affected (0.00 sec)

Records: 3 Duplicates: 0 Warnings: 0

mysql> SELECT i, RAND() FROM t;

+------+------------------+

| i | RAND() |

+------+------------------+

| 1 | 0.61914388706828 |

| 2 | 0.93845168309142 |

| 3 | 0.83482678498591 |

+------+------------------+

3 rows in set (0.00 sec)

mysql> SELECT i, RAND(3) FROM t;

+------+------------------+

| i | RAND(3) |

+------+------------------+

| 1 | 0.90576975597606 |

| 2 | 0.37307905813035 |

| 3 | 0.14808605345719 |

+------+------------------+

3 rows in set (0.00 sec)

mysql> SELECT i, RAND() FROM t;

+------+------------------+

| i | RAND() |

+------+------------------+

| 1 | 0.35877890638893 |

| 2 | 0.28941420772058 |

| 3 | 0.37073435016976 |

+------+------------------+

3 rows in set (0.00 sec)

mysql> SELECT i, RAND(3) FROM t;

+------+------------------+

| i | RAND(3) |

+------+------------------+

| 1 | 0.90576975597606 |

| 2 | 0.37307905813035 |

| 3 | 0.14808605345719 |

+------+------------------+

3 rows in set (0.01 sec)

mysql rand_mysql rand()产生随机整数范围及方法相关推荐

  1. mysql rand()产生随机整数范围及方法

    根据官方文档,rand()的取值范围为[0,1) 若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)) 例如, 若要在 ...

  2. mysql rand_mysql的rand函数

    项目中需要动态随机生成一些固定位数的随机数,如8位,5位等. 之前看到的写法是这样 ROUND(ROUND(RAND(),5)*100000) 这样写不太准确,有几率出现4位的情况,Rand() 函数 ...

  3. 【Java工具类】使用Random类对象生成随机整数

    本文目录 1.导言 2.Java实现与伪码模型 3.nextInt(bound)方法解析 4.nextInt(bound)方法高级玩法:控制随机数的生成范围 5.心得 6.随机数逸话 1.导言 Ran ...

  4. php随机整数rand和mt_rand,PHP随机数函数rand()与mt_rand()的讲解

    PHP随机数函数rand()与mt_rand()的讲解 PHP中rand()与mt_rand()都是用于产生一个指定范围内单独随机数的函数,如果需要产生多个不重复的随机数,请参考:PHP生成指定范围内 ...

  5. php随机整数函数,PHP随机数函数rand()与mt_rand()

    PHP中rand()与mt_rand()都是用于产生一个指定范围内单独随机数的函数,如果需要产生多个不重复的随机数,请参考:php生成指定范围内的N个不重复的随机数. 既然他们都是用于产生一个随机数, ...

  6. 随机从mysql中读取_如何实现MySQL表数据随机读取?从mysql表中读取随机数据

    文章转自 http://blog.efbase.org/2006/10/16/244/ 如何实现MySQL表数据随机读取?从mysql表中读取随机数据?以前在群里讨论过这个问题,比较的有意思.mysq ...

  7. mysql中RAND()随便查询记录效率问题和解决的方法分享

    在我们做开发的中效率一直是个问题,特别是对于非常多大数据量操作,今天我们碰到一个要随机查询数据,一開始我们可能想到最简单的order by rand() 来操作但效率不敢恭维啊 近期因为须要大概研究了 ...

  8. php mysql 随机字符串_MySQL_Mysql 自定义随机字符串的实现方法,前几天在开发一个系统,需要 - phpStudy...

    Mysql 自定义随机字符串的实现方法 前几天在开发一个系统,需要用到随机字符串,但是mysql的库函数有没有直接提供,就简单的利用现有的函数东拼西凑出随机字符串来.下面简单的说下实现当时. 1.简单 ...

  9. MySQL的rand()函数使用总结

    rand函数使用 使用rand()函数,会产生 [0-1) 的随机小数. mysql> select rand(); +---------------------+ | rand() | +-- ...

  10. 如何在Java中生成特定范围内的随机整数?

    如何生成特定范围内的随机int数值? 我已经尝试了以下方法,但是这些方法不起作用: 尝试1: randomNum = minimum + (int)(Math.random() * maximum); ...

最新文章

  1. Extjs 打包 failed to find any files
  2. aws iot 连接时间_AWS IoT Core 定价
  3. HTTP 错误 404 - 文件或目录未找到 - 最终解决方法
  4. 工作38:实现分页秀呀
  5. 用for循环打印出九九乘法表
  6. 天正电气lisp是什么文件_LSP文件扩展名 - 什么是.lsp以及如何打开? - ReviverSoft...
  7. 企业为什么要做ISO14001环境管理体系认证?
  8. 解决:Access denied for user ‘root‘@‘192.168.120.1‘ (using password: YES)
  9. 最新中国数据中心排行榜
  10. 【年薪百万之IT界大神成长之路零】年薪百万之IT界大神成长之路
  11. 驱动PCF8591模拟电压表
  12. PC端视频中语音实时转文字
  13. 【参赛作品71】CentOS 7.9 安装 openGauss 2.1.0 之剥茧抽丝
  14. mysql dlz驱动,安装wddns3 /dlz_mysql_driver.c:76:19: 错误:mysql.h:没有那个文件或目录...
  15. 使用群晖作mineportalbox(1):合理且不折腾地使用群晖硬件和套件
  16. c语言字符集的作用,1.属于C语言字符集中可显示字符的是()
  17. MacBook安装Windows Server(非虚拟机)
  18. 20210526 SDH
  19. 基于TCP/IP协议的物联网安卓应用开发基础教程(Android Studio开发)
  20. 3年级计算机的知识能力,三年级信息技术考核评价方案

热门文章

  1. FFmpeg之音频封装格式、音频编解码器
  2. 2022最新LOGO在线制作系统源码
  3. Tikhonov regularization 吉洪诺夫正则化
  4. win10一些快捷键及更新
  5. 蚂蚁篇无聊吗?看看猎人骨灰粉丝绝妙分析(1)
  6. matlab从无到有系列(九):Simulink基础仿真详解(全网最全,从入门到放弃)
  7. 中国工程院院士倪光南:政府应加大核心技术市场化引导
  8. python灰色关联度分析_基于灰色关联度重庆万州区边坡稳定影响因素分析
  9. ghost linux 黑屏,Ghost 与 Linux 的兼容性
  10. 中国民营500强企业爬取数据展示