Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 임의의 정수 범위(랜덤 숫자)를 생성하는 방법

MySQL에서 특정 범위 안의 임의의 정수(랜덤 숫자)를 얻으려면 RAND() 함수와 FLOOR() 함수를 함께 사용하면 됩니다. 이 글에서는 실제 테이블을 만들고 데이터를 삽입한 뒤, 랜덤 정수 범위를 생성하는 전체 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성하는 쿼리는 다음과 같습니다.

mysql> create table RandomIntegerDemo
-> (
    -> Number int
-> );
Query OK, 0 rows affected (0.61 sec)

2. 데이터 삽입하기

생성한 테이블에 1부터 14까지의 정수를 삽입합니다.

mysql> insert into RandomIntegerDemo values(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14);
Query OK, 14 rows affected (0.14 sec)
Records: 14 Duplicates: 0 Warnings: 0

3. 저장된 데이터 확인하기

SELECT 문을 사용해 테이블의 모든 레코드를 조회할 수 있습니다.

mysql> select *from RandomIntegerDemo;

실행 결과는 다음과 같습니다.

+--------+
| Number |
+--------+
| 1      |
| 2      |
| 3      |
| 4      |
| 5      |
| 6      |
| 7      |
| 8      |
| 9      |
| 10     |
| 11     |
| 12     |
| 13     |
| 14     |
+--------+
14 rows in set (0.00 sec)

4. 임의의 정수 범위 생성하기

이제 RAND() 함수를 활용해 1부터 14 사이의 랜덤 정수를 생성하는 쿼리입니다.

mysql> select Number, (FLOOR( 1 + RAND( ) *14 )) AS RandomValue
-> from RandomIntegerDemo
-> limit 0,14;

같은 테이블에서 랜덤 정수 값이 출력되는 것을 확인할 수 있습니다.

+--------+-------------+
| Number | RandomValue |
+--------+-------------+
|      1 | 9           |
|      2 | 8           |
|      3 | 13          |
|      4 | 13          |
|      5 | 10          |
|      6 | 10          |
|      7 | 7           |
|      8 | 3           |
|      9 | 8           |
|     10 | 2           |
|     11 | 14          |
|     12 | 6           |
|     13 | 3           |
|     14 | 9           |
+--------+-------------+
14 rows in set (0.00 sec)

동작 원리

핵심 수식인 FLOOR(1 + RAND() * N)의 동작 방식은 다음과 같습니다.

  • RAND()는 0 이상 1 미만의 난수를 반환합니다.
  • 여기에 원하는 범위의 크기(예제에서는 14)를 곱하면 0 이상 14 미만의 실수가 됩니다.
  • FLOOR()로 소수점 아래를 버리면 0부터 13 사이의 정수가 되고, 여기에 1을 더해 최종적으로 1부터 14 사이의 정수를 얻게 됩니다.

따라서 다른 범위의 랜덤 정수가 필요하다면 곱하는 숫자만 변경하면 됩니다. 예를 들어 1부터 100 사이의 값이 필요하면 FLOOR(1 + RAND() * 100)처럼 작성하면 됩니다.