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


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

    • 这样的需求并不陌生,例如,咱做的文章系统,需要作弊,给文章的浏览量随机加上某个范围内的整数。
    • 现在,假设需要产生 234 到 5678 之间的随机整数,MySQL 下怎么实现。
    • 我们无法改 MySQL 下 rand 的产生值,但我们可以改变我们的需求
    • 我们需要最小是 234,最大是 5678,rand 产生的最小是 0,最大是 1,我们需求的数减去 234 看看?
      • 最小数 234 - 234 = 0,最大数5678 - 234 = 5444;嘿,亮点,我们需求的最小数跟rand产生的最小吻合了。  
      • 我们只要让函数产生 0 到 5444 的随机数,再拿来加上 234,就是我们原需求了。  
      • 我们原需求用个伪表达式来描述,就会是  
    取整(rand(0,5444) + 234)
    • 现在只要想办法将我们需求再变一下,使得最小数为 0 不变,最大数变化成 1。
      • 很明显,5444 减去 5443 就是 1 了,但这样,最小数就会是负数了。  
      • 要最小数还是 0,最大数是1,太简单,5444 / 5444 = 1,0 /5444 = 0  
      • 现在,原需求的伪表达式就是:  
    取整(rand(0,1) * 5444 + 234)
    • 把伪表达式的参数去掉,就跟 MySQL 下的 rand 一样写法,一样效果。取整函数我们使用四舍五入 round() 或者使用 floor()/ceil()
      • 所以,我们原需求的最终真 MySQL 表达式就是
    ROUND(RAND() * 5444 + 234)
    select floor(rand()*6);
    作者:多测师高级讲师_郑sir
    微信:ZhengYing8887
    出处:https://www.cnblogs.com/ZhengYing0813/
    备注:本文版权归作者所有,欢迎转载和添加作者微信探讨技术,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    poj1321(棋盘问题)
    poj3009(Curling 2.0)
    站点 1访问非本站点下面的web.config文件需要的权限
    VS2010 Web网站发布详解
    服务禁止旁注,安全设置
    在Windows2012下安装SQL Server 2005无法启动服务的解决办法
    Server-U与IIS端口占用问题解决
    Server-U_详细配置
    创建维护计划时,提示“代理XP”组件已作为此服务器安全配置的一部分被关闭
    SQL SERVER 2005如何建立自动备份的维护计划
  • 原文地址:https://www.cnblogs.com/ZhengYing0813/p/14645182.html
Copyright © 2020-2023  润新知