获取65到122之间的随机数

时间:2013-12-23 13:53:34

标签: mysql sql random

我想获得65到122之间的随机数。我正在使用此查询

SELECT (FLOOR(65 + RAND() * 122));

在获得this question的帮助后,却给出了65-122范围之外的数字 请帮忙。谢谢你

4 个答案:

答案 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是否包括在内。根据不同,公式会略有不同。