Study/java

[Java] 난수 생성 및 범위 지정(Math.random, java.util.Random 사용)

 

자바에서 난수를 생성하는 방법은 대표적으로 Math.random() 메서드를 사용하는 방법, java.util.Random 클래스를 사용하는 방법 두가지가 있습니다.

 

Math.random

난수 생성 기본 사용법

double random = Math.random();
System.out.println("random = " + random); // 0.0 ~ 1.0 사이의 난수 생성

 

Math.random() 메소드를 사용해서 난수를 생성하면 0.0과 1.0 사이의 난수가 생성됩니다.

1.0은 포함되지 않습니다.

 

범위 지정 방법

for (int i = 0; i < 10; i++) {
	int randomInt = (int) (Math.random() * 10) + 1; // 1에서 10 사이의 정수
	System.out.println("randomInt = " + randomInt);
}

1부터 10까지의 난수 생성
1부터 10까지의 난수 생성

 

1~10 범위의 난수를 생성하는 예제 코드입니다.

 

 

 

 

java.util.Random

난수 생성 기본 사용법

Random random = new Random();
int randomInt = random.nextInt(5); // 0에서 4까지의 정수
double randomDouble = random.nextDouble(); // 0.0에서 1.0 사이의 실수

Random 클래스의 nextInt 메소드를 사용해서 난수를 생성하면 0부터 지정한 값까지(지정한 값은 제외)의 난수를 생성합니다.

int 타입 외에도 double 타입도 생성할 수 있습니다.

 

범위 지정 방법

Random random = new Random();
for (int i = 0; i < 10; i++) {
    int randomInt = random.nextInt(10) + 1; // 1에서 10 사이의 정수
    System.out.println("randomInt = " + randomInt);
}

Random 클래스를 사용해서 1~10까지 난수 생성
Random 클래스를 사용해서 1~10까지 난수 생성

+1을 하지 않으면 0에서부터 9까지의 범위로 생성됩니다.

 

범위를 정할 때 최소값이 0이 아니면 최소값만큼 더해주면 됩니다.

예를 들면 범위가 10~20일 때는 다음과 같이 범위를 정하면 됩니다.

Random random = new Random();
int min = 10;
int max = 20;
for (int i = 0; i < 10; i++) {
    int randomInt = random.nextInt(max - min + 1) + min; // 10에서 20 사이의 정수
    System.out.println("randomInt = " + randomInt);
}

10~20 범위의 난수 생성 결과
10~20 범위의 난수 생성 결과

최대값 - 최소값 + 1까지의 난수를 생성하고 그 값에 최소값을 더하면 됩니다.

예제에 사용된 값으로 예를 들면, 최대값 - 최소값 + 1 = 20 - 10 + 1 = 11이 되고 10이 더해집니다.

nextInt(11)은 0에서 10까지의 값이 생성됩니다.

그리고 그 값에 +10을 하게 되면 10에서 20까지의 값이 나오게 됩니다.