- Random 클래스란?
Random 클래스는 Java의 java.util 패키지에 포함된 클래스로, 다양한 종류의 난수를 생성하는 데 사용된다.
이 클래스는 시드(seed)를 기반으로 난수를 생성하며, 시드가 같다면 동일한 난수 시퀀스를 생성한다.
- Random 클래스의 생성자
- 기본 생성자 : 시드를 지정하지 않으면 '현재 시간(밀리초 단위)'을 시드로 사용하여 난수 생성기를 초기화한다.
- 시드를 사용하는 생성자 : 특정 시드를 지정하여 난수 생성기를 초기화한다. 동일한 시드를 사용하면 같은 난수 시퀀스를 생성한다.
Random random1 = new Random(); // 시드를 자동으로 현재 시간에 맞춰 생성
Random random2 = new Random(12345L); // 시드를 12345로 설정하여 생성
// 동일한 시드가 주어지면 Random 클래스는 동일한 난수 시퀀스를 생성
Random random3 = new Random(12345L);
Random random4 = new Random(12345L);
System.out.println(random3.nextInt()); // 두 객체는 동일한 시드를 사용하므로
System.out.println(random4.nextInt()); // 동일한 난수를 생성합니다.
- 주요 메소드
- nextInt(): int 범위의 난수를 반환합니다.
- nextInt(int bound): 0(포함)부터 bound(제외) 사이의 난수를 반환합니다.
- nextLong(): long 범위의 난수를 반환합니다.
- nextFloat(): 0.0(포함)에서 1.0(제외) 사이의 float 난수를 반환합니다.
- nextDouble(): 0.0(포함)에서 1.0(제외) 사이의 double 난수를 반환합니다.
- nextBoolean(): true 또는 false를 무작위로 반환합니다.
- nextBytes(byte[] bytes): 주어진 byte 배열을 무작위 값으로 채웁니다.
// int 범위의 임의의 난수를 생성
int randomInt = random1.nextInt();
// 0부터 9 사이의 난수 생성
int randomIntInRange = random1.nextInt(10);
// long 범위의 임의의 난수를 생성
long randomLong = random1.nextLong();
// 0.0 이상 1.0 미만의 float 난수 생성
float randomFloat = random1.nextFloat();
// 0.0 이상 1.0 미만의 double 난수 생성
double randomDouble = random1.nextDouble();
// true 또는 false 중 무작위로 반환
boolean randomBoolean = random1.nextBoolean();
// 배열을 무작위 값으로 채움
byte[] byteArray = new byte[10];
random1.nextBytes(byteArray);