Java 에서 특정 범위의 난수 생성하기

JavaBeginner
지금 연습하기

소개

Java 는 Math 및 Random 클래스에서 난수를 생성하기 위한 여러 내장 메서드를 제공합니다. 하지만 특정 범위 내에서 난수를 생성하는 것은 어려울 수 있습니다. 이 Lab 에서는 다음을 포함하여 특정 범위 내에서 난수를 생성하는 다양한 방법을 배우게 됩니다.

Math 클래스를 사용한 난수 생성기

Math.random() 메서드를 사용하여 0 과 1 사이의 float 값을 생성할 수 있으며, 이는 난수 생성에 적합합니다. 하지만 특정 범위 내에서 float 값을 생성하는 것은 여전히 어려울 수 있습니다.

이 방법에서는 Math.random() 메서드의 공식을 활용하여 minmax 사이의 난수를 생성합니다 ( min 포함, max 제외).

다음은 코드 예제입니다.

public static int randomNumberGenerator(int min, int max) {
    double r = Math.random();
    int randomNum = (int) (r * (max - min)) + min;
    return randomNum;
}

이 메서드를 사용하려면 randomNumberGenerator() 메서드를 사용하고 최소 및 최대 범위 정수 인수를 전달하십시오. 이 메서드는 범위 내의 임의 정수를 반환합니다.

다음은 randomNumberGenerator()를 사용하여 두 개의 난수를 생성하는 코드입니다. 첫 번째는 5 에서 105 사이의 범위 내에 있어야 하고, 두 번째는 2199 에서 2200 사이의 범위 내에 있어야 합니다.

int r1 = randomNumberGenerator(5, 105);
int r2 = randomNumberGenerator(2199, 2200);

이 메서드를 실행하려면 터미널에서 다음 명령을 실행하십시오.

$ cd project
$ touch RandomNumbers.java
// paste the code
$ javac RandomNumbers.java
$ java RandomNumbers

Random 클래스를 사용한 난수 생성기

지정된 범위 내에서 난수를 생성하는 또 다른 방법은 Random 클래스의 nextInt() 메서드를 사용하는 것입니다.

nextInt() 메서드는 [0, n) 범위의 정수 값을 생성합니다.

public static int randomNumberGenerator(int min, int max) {
    Random r = new Random();
    int randomNum = r.nextInt(max - min) + min;
    return randomNum;
}

이 메서드는 minmax 매개변수를 받아 지정된 범위 내의 임의 정수를 반환합니다. 이 메서드에서 nextInt()는 0 에서 (max-min) 사이의 난수를 생성한 다음, min 값을 더하여 최종 난수를 얻습니다.

다음은 randomNumberGenerator()를 사용하여 두 개의 난수를 생성하는 코드입니다. 첫 번째는 500 에서 2000 사이의 범위 내에 있어야 하고, 두 번째는 500 에서 501 사이의 범위 내에 있어야 합니다.

int randomNum1 = randomNumberGenerator(500, 2000);
int randomNum2 = randomNumberGenerator(500, 501);

이 메서드를 실행하려면 터미널에서 다음 명령을 실행하십시오.

$ cd project
$ touch RandomNumbers.java
// paste the code
$ javac RandomNumbers.java
$ java RandomNumbers

Random 클래스의 ints() 메서드 사용

Random 클래스의 ints() 메서드를 사용하여 범위 내에서 임의 정수의 스트림을 생성할 수도 있습니다.

다음은 스트림을 생성하는 코드입니다.

Random r = new Random();
IntStream stream = r.ints(5, 100, 120);

여기서 ints() 메서드는 세 개의 매개변수를 사용합니다. 첫 번째는 생성하려는 정수의 수를 정의하는 count 매개변수이고, 두 번째는 범위를 정의하는 bound 매개변수입니다. 예를 들어, 코드에서 bound 매개변수는 100 에서 120 까지입니다. 이는 최소값 (100) 을 포함하고 최대값 (120) 을 제외하는 매개변수입니다.

이 스트림을 생성한 후 forEach()를 사용하여 소비하거나 List 또는 배열과 같은 컬렉션으로 수집할 수 있습니다.

다음은 ints() 메서드를 사용하여 150 과 2000 사이의 다섯 개의 임의 정수를 생성하는 코드입니다.

int min = 150; //최소 범위를 정의
int max = 2000; //최대 범위를 정의

Random r = new Random();
IntStream stream = r.ints(5, min, max);//임의 스트림 생성
int randomNum = stream.findFirst().getAsInt();//스트림에서 첫 번째 값 가져오기

System.out.print("The random number is: " + randomNum);//임의 숫자 출력

이 메서드를 실행하려면 터미널에서 다음 명령을 실행하십시오.

$ cd project
$ touch RandomNumbers.java
// paste the code
$ javac RandomNumbers.java
$ java RandomNumbers

요약

Java 에서 특정 범위 내의 난수를 생성하는 것은 여러 애플리케이션에 필수적입니다. 이 랩에서는 Math.random(), Random.nextInt(), 그리고 Random.ints()를 사용하는 등, 범위 내에서 난수를 생성하는 여러 가지 방법을 배웠습니다. 각 방법에는 장단점이 있으며, 필요에 가장 적합한 방법을 선택해야 합니다.