[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.
답변
이것은의 정수 찾을 정확한 공식이다 i
에 j
어디i <= R <= j
FLOOR(min+RAND()*(max-min))