소개
Java 는 Math 및 Random 클래스에서 난수를 생성하기 위한 여러 내장 메서드를 제공합니다. 하지만 특정 범위 내에서 난수를 생성하는 것은 어려울 수 있습니다. 이 Lab 에서는 다음을 포함하여 특정 범위 내에서 난수를 생성하는 다양한 방법을 배우게 됩니다.
Java 는 Math 및 Random 클래스에서 난수를 생성하기 위한 여러 내장 메서드를 제공합니다. 하지만 특정 범위 내에서 난수를 생성하는 것은 어려울 수 있습니다. 이 Lab 에서는 다음을 포함하여 특정 범위 내에서 난수를 생성하는 다양한 방법을 배우게 됩니다.
Math.random() 메서드를 사용하여 0 과 1 사이의 float 값을 생성할 수 있으며, 이는 난수 생성에 적합합니다. 하지만 특정 범위 내에서 float 값을 생성하는 것은 여전히 어려울 수 있습니다.
이 방법에서는 Math.random() 메서드의 공식을 활용하여 min과 max 사이의 난수를 생성합니다 ( 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 클래스의 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;
}
이 메서드는 min 및 max 매개변수를 받아 지정된 범위 내의 임의 정수를 반환합니다. 이 메서드에서 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 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()를 사용하는 등, 범위 내에서 난수를 생성하는 여러 가지 방법을 배웠습니다. 각 방법에는 장단점이 있으며, 필요에 가장 적합한 방법을 선택해야 합니다.