자바에서 난수를 생성하는 방법은 대표적으로 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 범위의 난수를 생성하는 예제 코드입니다.
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);
}
+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);
}
최대값 - 최소값 + 1까지의 난수를 생성하고 그 값에 최소값을 더하면 됩니다.
예제에 사용된 값으로 예를 들면, 최대값 - 최소값 + 1 = 20 - 10 + 1 = 11이 되고 10이 더해집니다.
nextInt(11)은 0에서 10까지의 값이 생성됩니다.
그리고 그 값에 +10을 하게 되면 10에서 20까지의 값이 나오게 됩니다.