Подтвердить что ты не робот

Создание случайного числа с использованием MYSQL

Я хотел бы знать, есть ли способ выбрать произвольно сгенерированное число между 100 и 500 вместе с запросом select.

Например: SELECT name, address, random_number FROM users

Мне не нужно хранить это число в db и использовать его для отображения цели.

Я попробовал что-то вроде этого, но он не может работать.

SELECT name, address, FLOOR(RAND() * 500) AS random_number FROM users

Надеюсь, что кто-то поможет мне. Спасибо вам

4b9b3361

Ответ 1

Это должно дать то, что вы хотите:

FLOOR(RAND() * 401) + 100

Как правило, FLOOR(RAND() * (<max> - <min> + 1)) + <min> генерирует число между <min > и <max> включительно.

Обновление

Эта полная инструкция должна работать:

SELECT name, address, FLOOR(RAND() * 401) + 100 AS `random_number` 
FROM users

Ответ 2

Как RAND выдает число 0 <= v < 1.0 (см. документация) вам нужно использовать ROUND, чтобы вы могли получить верхнюю границу (в этом случае 500) и нижнюю границу (100 в этом случае)

Итак, чтобы создать нужный диапазон:

SELECT name, address, ROUND(100.0 + 400.0 * RAND()) AS random_number
FROM users

Ответ 3

Вы можете создать случайное число, используя FLOOR(RAND() * n) as randnum (n - целое число), однако, если вам не нужно повторять одно и то же случайное число, вам придется несколько хранить в таблице temp. Таким образом, вы можете проверить его с помощью where randnum not in (select * from temptable)...

Ответ 4

Дополнительно к этому ответу создайте функцию типа

CREATE FUNCTION myrandom(
    pmin INTEGER,
    pmax INTEGER
)
RETURNS INTEGER(11)
DETERMINISTIC
NO SQL
SQL SECURITY DEFINER
BEGIN
  RETURN floor(pmin+RAND()*(pmax-pmin));
END; 

и назовите

SELECT myrandom(100,300);

Это дает вам случайное число от 100 до 300

Ответ 5

Это правильная формула для нахождения целых чисел от i до j, где i <= R <= j

FLOOR(min+RAND()*(max-min))