我想在65到122.I随机数的随机数正在使用此查询
之间获得65至122
SELECT (FLOOR(65 + RAND() * 122));
从this question得到帮助之后,但它给我的65范围之外的数字-122。
请help.Thanks
我想在65到122.I随机数的随机数正在使用此查询
之间获得65至122
SELECT (FLOOR(65 + RAND() * 122));
从this question得到帮助之后,但它给我的65范围之外的数字-122。
请help.Thanks
SELECT (FLOOR(65 + RAND() * 57));
兰德提供0-1之间的数字。像0,75一样。 所以,如果你想获得一些介乎65和122那么:
65 = 65+0*57
122 = 65+1*57
我想你想要的是
65 + FLOOR(RAND()* 57)
最小的65 PLUS随机的0-57,所以在高端,65 + 57 = 122
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
的典型方式写这个是:
select 65 + FLOOR(RAND() * (122 - 65))
用这种方式书写,可以让您轻松查看极值。
顺便说一下,您的问题是否包含122是不清楚的。公式会因此而稍有不同。
+1和这个应该成为被接受的anwser ..因为这个解释了在最低和最高界限之后的最简单的计算 –
因为RAND可以生成1 * 122 + 65 = 187 – sdespont
我们已经有解决方案在http://stackoverflow.com/questions/14798640/creating-a-random-number-using-mysql –