如何在 MySQL 中为列表选择随机数

问题描述 投票:0回答:2

我想从 MySQL 存储过程中的整数列表中选择一个随机数。此列表是使用一些计算从另一个函数生成的。

例子:

[41,69,9,31,10,33,13,73,20,62,21,58,22,39]

我尝试了

RAND()
函数,但它们似乎依赖于恒定的最小值、最大值和步长值。任何帮助都会很棒。

注意: 此数字列表并不总是恒定的,因此它们没有恒定的最小值、最大值或步长值。

mysql random
2个回答
1
投票

您可以使用 RAND() 函数和 COUNT() 函数从整数列表中选择一个随机元素。

这是一个示例存储过程,演示了如何执行此操作:

DELIMITER //
CREATE PROCEDURE select_random_number()
BEGIN
    DECLARE list VARCHAR(255);
    DECLARE count INT;
    DECLARE random_index INT;
    DECLARE random_number INT;

-- Generate the list of integers
    SET list = '41,69,9,31,10,33,13,73,20,62,21,58,22,39';

-- Get the count of integers in the list
    SET count = LENGTH(list) - LENGTH(REPLACE(list, ',', '')) + 1;

-- Generate a random index between 1 and the count of integers
    SET random_index = FLOOR(RAND() * count) + 1;

-- Select the integer at the random index
    SET random_number = SUBSTRING_INDEX(SUBSTRING_INDEX(list, ',', 
    random_index), ',', -1);

-- Return the random number
    SELECT random_number;
END //
DELIMITER ;

您可以使用以下查询调用此存储过程:

CALL select_random_number();

这将从您的整数列表中返回一个随机整数。请注意,您需要更新存储过程中列表变量的值以匹配您自己的整数列表。


0
投票

有两个功能可以使用。尝试使用

elt()
功能。


[41,69,9,31,10,33,13,73,20,62,21,58,22,39]```
© www.soinside.com 2019 - 2024. All rights reserved.