![使用MySQL的指定范围随机数函数兰德() 使用MySQL的指定范围随机数函数兰德()](/rjstyle/noimg/97.webp)
伦德()*(Y-X)+ X
当我们学习PHP,我们知道随机函数rand或mt_rand可以传入一个参数,生成随机整数0和参数之间的关系,并介绍了两个参数来生成随机数这两个参数之间。
在MySQL中,随机数函数兰德不能在0到1之间传输浮点数。如果我们需要在MySQL中生成大于1的随机整数,我们该怎么办
这种需求并不奇怪,比如我做的文章系统,需要作弊,文章中的浏览量是随机添加到一定范围的整数的。
现在,假设您需要在234到5678之间生成一个随机整数,以及如何在MySQL下实现它。
我们不能改变MySQL中的兰德的价值,但是我们可以改变我们的需求,
1,我们需要的最小值是234,最大值是5678,最小值是0,最大值是1,我们需要减少234的数量才能看到
最小的数234-234 = 0,= 5444的5678-234最大数量;嘿,亮点,最少我们需要的是兰德产生最小匹配。
我们只让函数产生一个0到5444的随机数,然后加上234,这就是我们所需要的。
我们需要一个伪表达式来描述它,它将是。
舍入(兰德(05444)+ 234)
2,现在只要我们试图改变我们的需求,最小的数字是0,最大的数字被改为1。
很明显,5444减去5443等于1,但最小的数是负数。
最小值是0,最大值是1,太简单了,5444 5444 = 1, 0 5444 = 0。
现在,原始需求的伪表达式是:
整数(rand(0,1)* 5444 + 234)
3,去除伪表达式的参数,与兰德在mysql下相同,效果相同。整数函数我们用四到五个圆的整数。
因此,我们需要的最后一个真正的MySQL表达式是
圆(兰德(*)* 5444 + 234)
概括想法:
1。比较和差异(x,y)和rand(0,1)。
2、变换(x,y)兰德兰德(0,1)一步一步
伦德(x,y)
=兰特(0,((Y-X))+ X
=兰特(0 /(Y-X),(Y-X)/(Y-X))*(Y-X)+ X
= rand()*(Y-X)+ X
这是一个非常简单的数学公式。通过一个简单的例子,我们讨论了一些算法的基本技巧:减少需求,使我们的知识满足需求。