我想获得65到122之间的随机数。我正在使用此查询
SELECT (FLOOR(65 + RAND() * 122));
在获得this question的帮助后,却给出了65-122范围之外的数字 请帮忙。谢谢你
答案 0 :(得分:2)
我认为你想要的是
65 + FLOOR(RAND()* 57)
至少65 PLUS随机0-57,所以在高端,65 + 57 = 122
答案 1 :(得分:2)
SELECT (FLOOR(65 + RAND() * 57));
Rand提供0-1之间的数字。喜欢0,75。 所以,如果你想在65和122之间得到一个数字,那么:
65 = 65+0*57
122 = 65+1*57
答案 2 :(得分:1)
RAND()
返回0到1之间的随机数,因此65 + RAND() * 122
等于最小值/最大值:
MIN: 65 + 0 * 122 = 65 + (0 * 122) = 65 + 0 = 65
MAX: 65 + 1 * 122 = 65 + (1 * 122) = 65 + 122 = 187
因此您实际需要57
代替122
作为122 - 65 = 57
。
现在最小/最大值为:
MIN: 65 + 0 * 57 = 65 + (0 * 57) = 65 + 0 = 65
MAX: 65 + 1 * 57 = 65 + (1 * 57) = 65 + 57 = 122
或者,这是您可以使用的自定义功能:
DELIMITER //
CREATE FUNCTION RAND_BETWEEN(min FLOAT, max FLOAT)
RETURNS FLOAT
BEGIN
RETURN min + ((max - min) * RAND());
END//
DELIMITER ;
用法:
SELECT RAND_BETWEEN(60, 120) # eg. 115.81029510498047
SELECT RAND_BETWEEN(0, 150) # eg. 62.729270935058594
SELECT RAND_BETWEEN(10000, 10005) # eg. 10004.9560546875
SELECT FLOOR( RAND_BETWEEN(5, 10) ) # eg. 6
答案 3 :(得分:1)
写这个的典型方法是:
select 65 + FLOOR( RAND() * (122 - 65))
以这种方式编写可以让您轻松查看极值。
顺便说一下,你的问题有点不清楚122是否包括在内。根据不同,公式会略有不同。