公式如下:

rand() * (y-x) + x

咱们学php的都知道,随机函数rand或mt_rand,可以传入一个参数,产生0到参数之间的随机整数,也可以传入两个参数,产生这两个参数之间的随机整数。

而在mysql里,随机数函数rand不能传参,产生的0到1之间的浮点数,要是我们需要在mysql产生大于1的随机整数,该怎么办呢?

这样的需求并不陌生,例如,咱做的文章系统,需要作弊,给文章的浏览量随机加上某个范围内的整数。

现在,假设需要产生234到5678之间的随机整数,mysql下怎么实现。

我们无法改mysql下rand的产生值,但我们可以改变我们的需求,

1、我们需要最小是234,最大是5678,rand产生的最小是0,最大是1,我们需求的数减去234看看?

最小数234 - 234 = 0,最大数5678 - 234 = 5444;嘿,亮点,我们需求的最小数跟rand产生的最小吻合了。

我们只要让函数产生0到5444的随机数,再拿来加上234,就是我们原需求了。

我们原需求用个伪表达式来描述,就会是

取整(rand(0,5444) + 234)

2、现在只要想办法将我们需求再变一下,使得最小数为0 不变,最大数变化成1,

很明显,5444减去5443就是1了,但这样,最小数就会是负数了。

要最小数还是0,最大数是1,太简单,5444 / 5444 = 1 , 0 /5444 = 0

现在,原需求的伪表达式就是:

取整(rand(0,1) * 5444 + 234)

3、把伪表达式的参数去掉,就跟mysql下的rand一样写法,一样效果。取整函数我们使用四舍五入ROUND

所以,我们原需求的最终真mysql表达式就是

ROUND(RAND() * 5444 + 234)

总结一下思路:

1、比较rand(x, y)与rand(0,1)的差异。

2、将rand(x,y)逐步向rand(0,1)变换

rand(x,y)

= rand(0, (y-x)) + x

= rand(0/(y-x), (y-x)/(y-x)) * (y-x) +x

= rand() * (y-x) + x

这是一个很简单的数学算术式,用一个简单的例子,说了一下一些算法的基本技巧:降低要求使得自己所掌握的知识能达到需求。

本文标题: MySQL的指定范围随机数函数rand()的使用技巧

本文地址: http://www.cppcns.com/shujuku/mysql/163145.html

mysql 列 随机数_MySQL的指定范围随机数函数rand()的使用技巧相关推荐

  1. MySQL集函数随机数_MySQL的指定范围随机数函数rand()的使用技巧

    公式如下: rand() * (y-x) + x 咱们学php的都知道,随机函数rand或mt_rand,可以传入一个参数,产生0到参数之间的随机整数,也可以传入两个参数,产生这两个参数之间的随机整数 ...

  2. R语言使用rnorm函数生成正态分布随机数、自定义指定生成随机数的个数、均值、方差

    R语言使用rnorm函数生成正态分布随机数.自定义指定生成随机数的个数.均值.方差 目录 R语言使用rnorm函数生成正态分布随机数.自定义指定生成随机数的个数.均值.方差 R 语言特点 R语言使用r ...

  3. mysql默认值是随机数_mysql生成指定位数的随机数及批量生成随机数的方法

    1. 先介绍几个常用的 mysql 函数 rand()    随机生成 0~1 之间的小数(0<1) ceiling    向上取整 floor    向下取整 2. 生成随机数 -- 生成 3 ...

  4. mysql生成固定位数随机数_mysql生成指定位数的随机数

    1. 先介绍几个常用的 MySQL 函数 RAND()    随机生成 0~1 之间的小数(0<1) CEILING    向上取整 FLOOR    向下取整 2. 生成随机数 [code]- ...

  5. c mysql生成随机数函数,MySQL的指定范围随机数函数rand()的使用技巧

    公式如下: rand() * (y-x) + x 咱们学php的都知道,随机函数rand或mt_rand,可以传入一个参数,产生0到参数之间的随机整数,也可以传入两个参数,产生这两个参数之间的随机整数 ...

  6. mysql 列合并_mysql 列转行,合并字段的方法(必看)

    数据表: 列转行:利用max(case when then) max---聚合函数 取最大值 (case course when '语文' then score else 0 end) ---判断 a ...

  7. mysql列别_MySQL基础及CRUD

    大纲 1. 数据库的基本概念 2. MySQL数据库软件 1. 安装 2. 卸载 3. 配置 3. SQL 1) DDL(Data Definition Language)数据定义语言 2) DML( ...

  8. mysql 列显示出来_MySQL 显示列

    MySQL 显示列 表中的列是一系列可以存储文本,数字和图像的单元格.每一列为表中的每一行存储一个值.当我们使用MySQL服务器时,通常会显示特定表中的列信息.在本节中,我们将讨论如何在现有表中显示或 ...

  9. mysql列增减_Mysql基本操作——增减改查

    1 创建数据库:两种方法: create database my_db; createdatabase if not exists my_db; 2 删除数据库:两种方法: drop database ...

最新文章

  1. Asp.net与SQL一起打包部署安装
  2. CNN卷积神经网络推导和实现
  3. Google在Android P中隐藏了真棒的按应用自动旋转功能
  4. 在linux下安装python3_【转】在Linux下安装python3
  5. PHP获取windows登录用户名的方法
  6. OpenCore引导配置说明第十三版-基于OpenCore-0.6.6正式版
  7. ceph 纠删码解读和实践
  8. ddos应急处理_来看看DDoS攻击应急预案
  9. 蓝牙音箱电路板原理图_一种蓝牙音箱电路板的制作方法
  10. Linux文件内容查阅 - cat, tac, nl, more, less, head, tail, od
  11. python中newline什么意思,\newline转义序列在python中是什么意思?
  12. 轨道运营管理专业自荐书_城市轨道交通运营管理专业职业规划(1)
  13. python程序控制结构实验报告_20193227 实验二《Python程序设计》实验报告
  14. Keras开发环境安装方法新手教程(GPU版)
  15. fabric多节点网络环境搭建(v2.2)
  16. GitHub使用(详细版)
  17. Golang 判断IPv4和IPv6是否合法
  18. 如何清空Keil的历史文件记录
  19. 360悬浮球-小贝常规样式
  20. 新唐NUC980使用记录:U-Boot Linux 编译与烧录(基于SPI NAND)

热门文章

  1. 沈航C语言上机实验题答案,大学大一c语言程序设计实验室上机题全部代码答案(实验报告).doc...
  2. 帆软报表 js 调用sql_SQL Server中的报表–创建由先前创建的主报表调用的基于矩阵的子报表
  3. SQL Server中的文件流
  4. 数据库sql创建标量值函数_使用JSON_VALUE()从JSON数据中提取标量值
  5. python—004
  6. 如何用DAX实现查看每个月中不同类别排名前一位,以及一个简单的svg案例
  7. linux磁盘链路故障
  8. 事件总线帧---Otto
  9. 学习笔记(1):activiti6.0从入门到精通-设置流程变量(概述)
  10. [原]部署kubernetes dashboard(二)