programing

MYSQL을 사용하여 난수 생성

newsource 2022. 9. 25. 00:26

MYSQL을 사용하여 난수 생성

선택 쿼리와 함께 랜덤으로 생성된 100에서 500 사이의 숫자를 선택하는 방법이 있는지 알고 싶습니다.

예:SELECT name, address, random_number FROM users

이 번호는 db에 저장할 필요가 없으며 표시 용도로만 사용합니다.

이런 식으로 해봤는데 작동이 안 돼요.

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

누가 좀 도와줬으면 좋겠다.감사합니다.

이것으로 원하는 것을 얻을 수 있습니다.

FLOOR(RAND() * 401) + 100

일반적으로는FLOOR(RAND() * (<max> - <min> + 1)) + <min>사이의 숫자를 생성합니다.<min> 및<max>포괄적

갱신하다

이 전체 스테이트먼트는 기능합니다.

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

~하듯이RAND사용할 필요가 있는 숫자0 <= v < 1.0 (매뉴얼 참조)이 생성됩니다.ROUND상한(이 경우 500)과 하한(이 경우 100)을 얻을 수 있도록 합니다.

필요한 범위를 작성하려면:

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

이 답변 외에 다음과 같은 함수를 만듭니다.

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 사이의 난수를 제공합니다.

다음을 사용하여 난수를 생성할 수 있습니다.FLOOR(RAND() * n) as randnum(n은 정수입니다). 단, 같은 난수를 반복할 필요가 없는 경우에는 temp 테이블에 어느 정도 저장해야 합니다.그래서 당신은 그것을 체크할 수 있습니다.where randnum not in (select * from temptable)...

둘 다 정상적으로 동작하고 있습니다.

select round(<maxNumber>*rand())

FLOOR(RAND() * (<max> - <min> + 1)) + <min> // generates a number
between <min> and <max> inclusive.

이것은 정수를 찾기 위한 올바른 공식입니다.i로.j어디에i <= R <= j

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

언급URL : https://stackoverflow.com/questions/14798640/creating-a-random-number-using-mysql