mysql rand_mysql rand()产生随机整数范围及方法
根据官方文档,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()产生随机整数范围及方法相关推荐
- mysql rand()产生随机整数范围及方法
根据官方文档,rand()的取值范围为[0,1) 若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)) 例如, 若要在 ...
- mysql rand_mysql的rand函数
项目中需要动态随机生成一些固定位数的随机数,如8位,5位等. 之前看到的写法是这样 ROUND(ROUND(RAND(),5)*100000) 这样写不太准确,有几率出现4位的情况,Rand() 函数 ...
- 【Java工具类】使用Random类对象生成随机整数
本文目录 1.导言 2.Java实现与伪码模型 3.nextInt(bound)方法解析 4.nextInt(bound)方法高级玩法:控制随机数的生成范围 5.心得 6.随机数逸话 1.导言 Ran ...
- php随机整数rand和mt_rand,PHP随机数函数rand()与mt_rand()的讲解
PHP随机数函数rand()与mt_rand()的讲解 PHP中rand()与mt_rand()都是用于产生一个指定范围内单独随机数的函数,如果需要产生多个不重复的随机数,请参考:PHP生成指定范围内 ...
- php随机整数函数,PHP随机数函数rand()与mt_rand()
PHP中rand()与mt_rand()都是用于产生一个指定范围内单独随机数的函数,如果需要产生多个不重复的随机数,请参考:php生成指定范围内的N个不重复的随机数. 既然他们都是用于产生一个随机数, ...
- 随机从mysql中读取_如何实现MySQL表数据随机读取?从mysql表中读取随机数据
文章转自 http://blog.efbase.org/2006/10/16/244/ 如何实现MySQL表数据随机读取?从mysql表中读取随机数据?以前在群里讨论过这个问题,比较的有意思.mysq ...
- mysql中RAND()随便查询记录效率问题和解决的方法分享
在我们做开发的中效率一直是个问题,特别是对于非常多大数据量操作,今天我们碰到一个要随机查询数据,一開始我们可能想到最简单的order by rand() 来操作但效率不敢恭维啊 近期因为须要大概研究了 ...
- php mysql 随机字符串_MySQL_Mysql 自定义随机字符串的实现方法,前几天在开发一个系统,需要 - phpStudy...
Mysql 自定义随机字符串的实现方法 前几天在开发一个系统,需要用到随机字符串,但是mysql的库函数有没有直接提供,就简单的利用现有的函数东拼西凑出随机字符串来.下面简单的说下实现当时. 1.简单 ...
- MySQL的rand()函数使用总结
rand函数使用 使用rand()函数,会产生 [0-1) 的随机小数. mysql> select rand(); +---------------------+ | rand() | +-- ...
- 如何在Java中生成特定范围内的随机整数?
如何生成特定范围内的随机int数值? 我已经尝试了以下方法,但是这些方法不起作用: 尝试1: randomNum = minimum + (int)(Math.random() * maximum); ...
最新文章
- Extjs 打包 failed to find any files
- aws iot 连接时间_AWS IoT Core 定价
- HTTP 错误 404 - 文件或目录未找到 - 最终解决方法
- 工作38:实现分页秀呀
- 用for循环打印出九九乘法表
- 天正电气lisp是什么文件_LSP文件扩展名 - 什么是.lsp以及如何打开? - ReviverSoft...
- 企业为什么要做ISO14001环境管理体系认证?
- 解决:Access denied for user ‘root‘@‘192.168.120.1‘ (using password: YES)
- 最新中国数据中心排行榜
- 【年薪百万之IT界大神成长之路零】年薪百万之IT界大神成长之路
- 驱动PCF8591模拟电压表
- PC端视频中语音实时转文字
- 【参赛作品71】CentOS 7.9 安装 openGauss 2.1.0 之剥茧抽丝
- mysql dlz驱动,安装wddns3 /dlz_mysql_driver.c:76:19: 错误:mysql.h:没有那个文件或目录...
- 使用群晖作mineportalbox(1):合理且不折腾地使用群晖硬件和套件
- c语言字符集的作用,1.属于C语言字符集中可显示字符的是()
- MacBook安装Windows Server(非虚拟机)
- 20210526 SDH
- 基于TCP/IP协议的物联网安卓应用开发基础教程(Android Studio开发)
- 3年级计算机的知识能力,三年级信息技术考核评价方案