公式如下:

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查询随机数据的4种方法和性能对比从MySQL数据库表中取出随机数据的代码mysql获取随机数据的方法mysql优化取随机数据慢的方法mysql 某字段插入随机数(插入随机数到MySQL数据库)详解MySQL中concat函数的用法(连接字符串)Python连接MySQL并使用fetchall()方法过滤特殊字符sqlserver、mysql获取连接字符串步骤PHP 设置MySQL连接字符集的方法MySQL产生随机数并连接字符串的方法示例

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时间戳(Timestamp)函数

    1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp() mysql> select current_timestamp, curren ...

  7. c mysql查询年月日_mysql查询指定日期时间内的sql语句及原理

    查询指定日期时间内的sql语句的实现原理: 如果是月份就是当前的月减去你要统计的时间,比如要查询数据库中从今天起往前三个月的所有记录. 另外,在数据库设计阶段,要注意时间字段为int(11),保存在数 ...

  8. mysql库迁移_MySql数据库 指定库迁移

    1 环境准备 1.两台数据库服务器,并安装好mysql服务,两台机器之间内网互相通信,最好可以进行免密传输 也可以一台服务器搭建多实例环境 10.0.0.101 10.0.0.102 2 迁移流程 2 ...

  9. mysql 取年月_MySQL 获取指定时间段的年月

    # 在编写存储过程时,可能会遇到通过输入的时间,得出该时间段的年月 # 下面通过试图的方式解决该问题 # 思路: # 创建 年 . 月 的试图 # 这里创建2010~2020 年的年份 drop vi ...

最新文章

  1. DataGrid和GridView单击背景变色双击颜色还原
  2. php -- 检查是否存在
  3. mysql list列表批量更新数据,Mybatis传入List实现批量更新的示例代码
  4. idea下一次Jar包依赖问题的解决过程
  5. 阿里技术专家麒烨:修炼测试基本功
  6. 【Luogu1345】周游加拿大(动态规划)
  7. 类的继承------C++
  8. OCCT学习001-----简介
  9. Latex:Tikz脑图(Mindmap)如何添加新结点并调整结点位置
  10. 如何解决上班下午3:00发困的事情
  11. 最新uniapp打包IOS详细步骤
  12. Hark的数据结构与算法练习之堆排序
  13. 9.11 myl模拟赛
  14. 【抽样调查】CH3 分层随机抽样
  15. MATLAB app 实现音乐播放器
  16. 【风马一族_Android】Android学习
  17. Python qrcode 生成个性的透明二维码
  18. word2003(2007) 文档结构图 字体大小调节
  19. slot/slot-scope is deprecated, consult docs for better alternative
  20. CSS元素隐藏的方式与区别

热门文章

  1. 测试人员如何使用浏览器的f12_浏览器F12功能键对测试工程师的重要性
  2. 杰理之芯片型号编号说明【篇】
  3. 12星座情人圣诞礼物建议
  4. mysql 表的crud_MySQL中表的数据的增删改查(CRUD)
  5. Day716. 抛出异常是一个合适的选择吗? -Java8后最重要新特性
  6. 【大数据实战项目五】数据结果图形可视化
  7. frp内网穿透+Nginx反向代理
  8. shell输出每一行的最后几个字符
  9. oracle主键自增
  10. 科创板|澜起科技网上摇号中签结果出炉 47453个号码中签