当前位置: 首页 > news >正文

MySQL集函数随机数_MySQL的随机数函数rand()的使用技巧

咱们学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

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

相关文章:

  • jmx编程监控mysql_JMX-JAVA进程监控利器
  • zookeeper清空hbase_zookeeper和HBASE总结
  • ldap radius mysql_OpenLDAP+FreeRADIUS+MySQL+RP-PPPOE 构建PPPOE服务器
  • mysql分批导出数据_一分钟学会系列:大批量数据导出Excel-分页查询性能优化
  • php mysql 创建数据表_PHP MySQL 创建数据表
  • pythonioerror0 121_Python中的“IOError:[Errno 0]Error”错误
  • python词云乱码_python词云库wordCloud使用方法详解(解决中文乱码)
  • 儿童手工制作日历_怎么做手工儿童卡通绵羊日程管理小日历
  • 内存cpu占用不高但mysql很卡_解决Mysql占用cpu,内存高故障案例
  • 康乐面板mysql默认密码_Linux安装kangle(康乐)网站管理面板的详细教程
  • mysql jpa 不要自动建表_18.1. 从零开始学springboot-配置jpa自动建表为innodb
  • mysql 存储json如何查出_Mysql如何提取存储的JSON值
  • mysql增量备份backupex_数据库增量备份,恢复innobackex
  • python如何剪辑音频_剪辑音乐要很久?3行语句Python瞬间搞定
  • tomcat文件路径更换_tomcat图片上传指定位置并显示(修改配置文件)
  • [译]CSS 居中(Center)方法大合集
  • 【译】理解JavaScript:new 关键字
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • canvas 绘制双线技巧
  • CAP 一致性协议及应用解析
  • Docker入门(二) - Dockerfile
  • github指令
  • Java 23种设计模式 之单例模式 7种实现方式
  • NSTimer学习笔记
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • React-Native - 收藏集 - 掘金
  • yii2中session跨域名的问题
  • zookeeper系列(七)实战分布式命名服务
  • 服务器之间,相同帐号,实现免密钥登录
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 力扣(LeetCode)965
  • 学习ES6 变量的解构赋值
  • 优秀架构师必须掌握的架构思维
  • 函数计算新功能-----支持C#函数
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #pragma预处理命令
  • (3)STL算法之搜索
  • (day6) 319. 灯泡开关
  • (HAL库版)freeRTOS移植STMF103
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (接口封装)
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (学习日记)2024.01.19
  • (一)插入排序
  • (转)人的集合论——移山之道
  • (转载)利用webkit抓取动态网页和链接
  • (轉)JSON.stringify 语法实例讲解
  • ***详解账号泄露:全球约1亿用户已泄露
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .equals()到底是什么意思?
  • .mysql secret在哪_MYSQL基本操作(上)
  • .net 4.0发布后不能正常显示图片问题
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑