난수 생성 방법
이번 포스팅은 Java에서 특정 범위의 난수를 생성하는 몇 가지 방법을 소개합니다.
방법 1. Random 클래스 사용 방법
첫 번째 방법으로 가장 잘 알려져 있는 Random 클래스를 사용하여 특정 범위의 난수를 생성할 수 있습니다.
먼저, Random 클래스의 객체를 생성합니다.
int 타입의 랜덤 값을 생성하기 위해 다음 메서드를 사용합니다.
public int nextInt();
public int nextInt(int bound);
nextInt() 메서드
- int 타입의 범위에 해당하는 랜덤 값을 생성합니다.
- 범위: -2,147,483,648 ~ 2,147,483,647
nextInt(int bound) 메서드
- 0 ~ (bound - 1) 범위에 해당하는 랜덤 값을 생성합니다.
float, double 타입의 랜덤 값을 생성하기 위해 다음 메서드를 사용합니다. 0 ~ 1.0 사이의 값을 생성합니다.
public float nextFloat();
public double nextDouble();
boolean 타입의 랜덤 값을 생성하기 위해 다음 메서드를 사용합니다.
public boolean nextBoolean();
다음 예제는 Random 클래스를 사용하여 랜덤 값을 생성합니다.
public static void main(String args[]) {
Random rand = new Random();
System.out.println("int 타입인 랜덤 값: " + rand.nextInt());
System.out.println("int 타입인 0 ~ 20 범위의 값 : " + rand.nextInt(21));
System.out.println("float 타입인 랜덤 값: " + rand.nextFloat());
System.out.println("double 타입인 랜덤 값: " + rand.nextDouble());
System.out.println("boolean 타입의 랜덤 값: " + rand.nextBoolean());
}
[첫 번째 실행 결과]
int 타입인 랜덤 값: 126636943
int 타입인 0 ~ 20 범위의 값 : 16
float 타입인 랜덤 값: 0.80442506
double 타입인 랜덤 값: 0.9826649452351304
boolean 타입의 랜덤 값: true
[두 번째 실행 결과]
int 타입인 랜덤 값: -420598246
int 타입인 0 ~ 20 범위의 값 : 13
float 타입인 랜덤 값: 0.043560445
double 타입인 랜덤 값: 0.35768994280458843
boolean 타입의 랜덤 값: false
방법 2. Math 클래스 사용 방법
Math 클래스의 random() 메서드를 사용하여 랜덤 값을 생성할 수 있습니다.
public static double random();
random() 메서드는 내부적으로 Random 클래스의 nextDouble() 메서드를 호출합니다.
특정 범위의 정수 타입인 랜덤 값을 생성하려면, 다음 계산식을 사용합니다.
Math.floor(Math.random()*(maxValue - minValue + 1) + minValue);
다음 예제는 Math 클래스의 random() 메서드를 사용하여 특정 범위의 정수 타입인 랜덤 값을 생성합니다.
public static void main(String args[]) {
System.out.println("Math.random(): " + Math.random());
System.out.println("100 ~ 200 범위의 랜덤 값 : " + Math.floor(Math.random()*(101) + 100));
System.out.println("1000 ~ 2000 범위의 랜덤 값: " + Math.floor(Math.random()*(1001) + 1000));
}
[첫 번째 실행 결과]
Math.random(): 0.9179218421239489
100 ~ 200 범위의 랜덤 값 : 162.0
1000 ~ 2000 범위의 랜덤 값: 1530.0
[두 번째 실행 결과]
Math.random(): 0.9893817160894979
100 ~ 200 범위의 랜덤 값 : 108.0
1000 ~ 2000 범위의 랜덤 값: 1719.0
방법 3. 여러 개의 랜덤 값 생성
Java 버전이 1.8 이상인 경우 Random 클래스에서 제공하는 ints() 메서드를 사용하여 int 타입의 범위에 해당하는 여러 개의 랜덤 값을 생성할 수 있습니다.
public IntStream ints();
- 매개변수가 없는 경우 랜덤 값을 무한으로 생성합니다.
public IntStream ints(long streamSize);
- 매개변수로 전달된 streamSize만큼 랜덤 값을 생성합니다.
public IntStream ints(int randomNumberOrigin, int randomNumberBound);
- randomNumberOrigin부터 (randomNumberBound - 1) 범위의 랜덤 값을 생성합니다.
- 랜덤 값을 무한으로 생성합니다.
public IntStream ints(
long streamSize,
int randomNumberOrigin,
int randomNumberBound)
- randomNumberOrigin부터 (randomNumberBound - 1) 범위의 랜덤 값을 생성합니다.
- 매개변수로 전달된 streamSize만큼 랜덤 값을 생성합니다.
다음 예제는 ints() 메서드를 사용하여 1 ~ 10 사이의 랜덤 값 5개를 생성합니다.
public static void main(String args[]) {
new Random().ints(5, 1, 11).forEach(System.out::println);
}
[실행 결과]
6
8
9
8
6
'Java' 카테고리의 다른 글
[Java]Object 클래스의 getClass 메서드 (0) | 2022.09.03 |
---|---|
[Java]Object 클래스의 toString 메서드 (0) | 2022.09.02 |
[Java]소수점 반올림하는 방법 (0) | 2022.08.16 |
[Java]LocalDateTime 값 변경 방법(날짜 및 시간 변경) (0) | 2022.08.13 |
[Java]시간 더하기 및 빼기(LocalTime 더하기 및 빼기) (0) | 2022.08.13 |
댓글