Mysql应用MySQL的指定范围随机数函数rand()的使用技巧

Mysql应用MySQL的指定范围随机数函数rand()的使用技巧,第1张

概述介绍《Mysql应用MySQL的指定范围随机数函数rand()的使用技巧》开发教程,希望对您有用。

《MysqL应用MysqL的指定范围随机数函数rand()的使用技巧》要点:
本文介绍了MysqL应用MysqL的指定范围随机数函数rand()的使用技巧,希望对您有用。如果有疑问,可以联系我们。

公式如下:MysqL数据库

rand() * (y-x) + xMysqL数据库

咱们学PHP的都知道,随机函数rand或mt_rand,可以传入一个参数,产生0到参数之间的随机整数,也可以传入两个参数,产生这两个参数之间的随机整数.
而在MysqL里,随机数函数rand不能传参,产生的0到1之间的浮点数,要是我们需要在MysqL产生大于1的随机整数,该怎么办呢?
这样的需求并不陌生,例如,咱做的文章系统,需要作弊,给文章的浏览量随机加上某个范围内的整数.

现在,假设需要产生234到5678之间的随机整数,MysqL下怎么实现.MysqL数据库

我们无法改MysqL下rand的产生值,但我们可以改变我们的需求,MysqL数据库

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

最小数234 - 234 = 0,最大数5678 - 234 = 5444;嘿,亮点,我们需求的最小数跟rand产生的最小吻合了.
我们只要让函数产生0到5444的随机数,再拿来加上234,就是我们原需求了.
我们原需求用个伪表达式来描述,就会是
取整(rand(0,5444) + 234)MysqL数据库

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)MysqL数据库

总结一下思路:
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数据库

总结

以上是内存溢出为你收集整理的Mysql应用MySQL的指定范围随机数函数rand()的使用技巧全部内容,希望文章能够帮你解决Mysql应用MySQL的指定范围随机数函数rand()的使用技巧所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1160898.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存