💻 프로그래밍 언어/Java

[Java] Random().nextInt()

케로⸝⸝◜࿀◝ ⸝⸝ 2024. 6. 28. 13:45

개요

Java에서 Random().nextInt() 메서드는 Java의 java.util.Random 클래스에 속한 메서드로, 주어진 범위 내에서 임의의 정수를 생성하는 데 사용된다. Random 클래스는 난수 생성기를 제공하여 다양한 난수를 생성할 수 있게 해 준다. nextInt() 메서드의 사용법은 크게 두 가지로 나눌 수 있다.

 

nextInt() 메서드 - 매개변수 없음

이 메서드는 범위 제한 없이 임의의 정수를 생성한다. 생성된 정수는 int 자료형의 모든 범위 내에서 무작위로 선택된다.

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        Random random = new Random();
        int randomNumber = random.nextInt();
        System.out.println(randomNumber);
    }
}

 

nextInt(int bound) 메서드 - 매개변수 있음

이 메서드는 0부터 주어진 bound(경계)의 범위에서 임의의 정수를 생성한다. 이때 생성되는 정수는 0 이상 bound 미만으로, bound 값은 포함되지 않는다.

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        Random random = new Random();
        int bound = 10;
        int randomNumber = random.nextInt(bound);
        System.out.println(randomNumber); // 0 이상 10 미만의 정수 출력
    }
}

 

주의 사항

  • Random 객체는 필요에 따라 한 번만 생성하여 재사용하는 것이 좋다. 여러 번 생성하면 성능 저하가 발생할 수 있다.
  • 임의의 정수는 일반적으로 시드 값을 바탕으로 생성된다. 시드 값을 설정하지 않으면 기본적으로 현재 시간을 시드로 사용한다. 같은 시드 값을 사용하면 동일한 순서의 난수가 생성된다.
import java.util.Random;

public class Main {
    public static void main(String[] args) {
        long seed = 12345L;
        Random random = new Random(seed);
        int randomNumber1 = random.nextInt();
        int randomNumber2 = random.nextInt();
        System.out.println(randomNumber1);
        System.out.println(randomNumber2);
    }
}

→ 이렇게 하면 항상 같은 시드 값으로 Random 객체를 초기화하기 때문에, 실행할 때마다 동일한 순서의 난수를 생성할 수 있다.

 

특정 범위의 난수를 생성하고 싶을 때

만약, 11 ~ 99 사이의 난수를 생성하고 싶다면 다음과 같이 코드를 작성하면 된다.

import java.util.Random;

public class Main {

    final static int MINIMUM_FACTOR = 11;
    final static int MAXIMUM_FACTOR = 99;

    public static void main(String[] args) {
        Random random = new Random();
        // 99 - 11 + 1 = 89
        // bound 값을 포함되지 않으므로 0 ~ 88 사이의 난수가 생성
        // 여기에 MINIMUM_FACTOR를 더하면, 최종적으로 11 ~ 99 사이의 난수가 생성
        int randomNumber = random.nextInt((MAXIMUM_FACTOR - MINIMUM_FACTOR) + 1) + MINIMUM_FACTOR;
        System.out.println(randomNumber);
    }
}

 

반응형