gpt4 book ai didi

mysql - MYSQL 有没有类似 mt_rand 的函数

转载 作者:行者123 更新时间:2023-11-29 12:01:55 25 4
gpt4 key购买 nike

MYSQL 有类似 mt_rand 的函数吗?我到处都找过了,但似乎找不到。

最佳答案

DELIMITER $$

CREATE FUNCTION `my_rand`(`arg_min` INT, `arg_max` INT) RETURNS int(11)
BEGIN
RETURN ROUND( arg_min + RAND( ) * (arg_max-arg_min) );
END

调用:

SELECT my_rand(10,15)

将输出 10 到 15 之间的一个整数。

作为旁注......如果您想要 mt_rand 的好处,打算“Marsenne Twister”,那么我担心您应该寻找 UDF 实现(也许您应该检查这个 Statistics for mySQL ) .

如果您寻找一个简单地输出最小值和最大值之间的随机整数的函数,这应该可以解决问题。

此外,如果我们使用 FLOOR 作为舍入函数,则根据我的示例,不可能得到 15。

这是因为,从文档来看:

RAND() Returns a random floating-point value v in the range 0 <= v < 1.0.

在 RAND 之后立即阅读,您可以在文档中找到 ROUND...它指出 ROUND 的舍入行为非常依赖于实现,因此它的行为可能会在 mysql 版本之间发生变化(并且已经发生变化)。这可能就是文档建议使用 FLOOR 而不是 ROUND 对 RAND 进行舍入的原因。所以,基本上,哪种选择最好似乎是有争议的......“地板还是圆形,做出你的选择......”

最后...看看这篇文章。这可能看起来很可怕,但至少它清楚地表明这个问题确实是“困难”的。

Order by RAND() by Jan Kneschke

关于mysql - MYSQL 有没有类似 mt_rand 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32236915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com