[mysql] 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은 정수)를 사용하여 난수를 만들 수 있지만 동일한 난수를 반복 할 필요가 없다면 임시 테이블에 어느 정도 저장해야합니다. 그래서 당신은 그것을 확인할 수 있습니다 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.


답변

이것은의 정수 찾을 정확한 공식이다 ij어디i <= R <= j

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


답변