zoukankan      html  css  js  c++  java
  • 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/
    备注:本文版权归作者所有,欢迎转载和添加作者微信探讨技术,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    ProgressBar 自我学习笔记(二)
    使用UIElement.AddHandler捕获已被处理的RoutedEvent
    Windows Phone 7 Tombstoning with MVVM and Sterling
    向256 MB内存的Windows Phone提供应用的最佳实践指导
    ICommand分享学习
    ProgressBar 自我学习笔记(一)
    [转] 利用fiddler为windows phone模拟器抓包
    【推荐】Windows Phone各版本历史!
    Windows Phone内存管理的演变[E800]
    Ckeditor和ckfinder完美结合,配置使用说明
  • 原文地址:https://www.cnblogs.com/ZhengYing0813/p/14645182.html
Copyright © 2011-2022 走看看