random()하면 수학용 Math클래스에서의 random메소드가 있다.
https://standout.tistory.com/1207
다른방법으로 Random클래스를 사용해서도 난수를 얻을 수 있는데
사실 Math.random()에서 내부적으로 Random클래스의 인스턴스를 생성하여 사용하는 것임으로 큰 차이는 없다고 보자.
double randNum1 = Math.random();
double randNum2 = new Random().nextDouble();
Math.random()은 간단히 0.0~1.0의 난수를 생성하지만
java.util.Random 클래스는 더많은 유연성과 다양한 형태의 난수를 생성할 수 있다
관련 메소드를 확인하자
아래는 특정 형으로 난수를 만들 수 있음을 보여준다.
Random()
// 1. 기본 시드를 사용한 생성자
Random random1 = new Random();
System.out.println("랜덤 정수 1: " + random1.nextInt()); // 출력 결과: 랜덤 정수 1: -1157793070
Random(long seed)
특정 시드를 사용한 생성자 seed를 난수화한다.
// 2. 특정 시드를 사용한 생성자
Random random2 = new Random(12345);
System.out.println("랜덤 정수 2: " + random2.nextInt()); // 출력 결과: 랜덤 정수 2: 1926675690
boolean nextBoolean()
// 3. nextBoolean
boolean randomBoolean = random1.nextBoolean();
System.out.println("랜덤 불리언: " + randomBoolean); // 출력 결과: 랜덤 불리언: false
void nextBytes(byte[] bytes)
// 4. nextBytes
byte[] randomBytes = new byte[5];
random1.nextBytes(randomBytes);
System.out.print("랜덤 바이트: ");
for (byte b : randomBytes) {
System.out.print(b + " ");
}
System.out.println(); // 출력 결과: 랜덤 바이트: -35 -16 9 104 -33
double nextDouble()
// 5. nextDouble
double randomDouble = random1.nextDouble();
System.out.println("랜덤 실수: " + randomDouble); // 출력 결과: 랜덤 실수: 0.36329937160315324
float nextFloat()
// 6. nextFloat
float randomFloat = random1.nextFloat();
System.out.println("랜덤 부동소수점: " + randomFloat); // 출력 결과: 랜덤 부동소수점: 0.84784603
double nextGaussian()
// 7. nextGaussian
double randomGaussian = random1.nextGaussian();
System.out.println("랜덤 가우시안: " + randomGaussian); // 출력 결과: 랜덤 가우시안: 0.4245986798951373
int nextInt()
// 8. nextInt
int randomInt = random1.nextInt();
System.out.println("랜덤 정수 3: " + randomInt); // 출력 결과: 랜덤 정수 3: -169091678
int nextInt(int n)
// 9. 지정 범위의 nextInt
int randomIntBound = random1.nextInt(100);
System.out.println("랜덤 정수 4 (범위): " + randomIntBound); // 출력 결과: 랜덤 정수 4 (범위): 20
long nextLong()
// 10. nextLong
long randomLong = random1.nextLong();
System.out.println("랜덤 롱: " + randomLong); // 출력 결과: 랜덤 롱: -1724282995151297858
void setSeed(long seed)
// 11. setSeed
random1.setSeed(98765);
System.out.println("시드 설정: 98765");
System.out.println("랜덤 정수 5: " + random1.nextInt()); // 출력 결과: 랜덤 정수 5: -1129397814
'JAVA' 카테고리의 다른 글
String.split()의 구식 api, java.util.StringTokenizer (0) | 2023.12.26 |
---|---|
java.util.Scanner 입력소스를 읽다 (0) | 2023.12.26 |
Object클래스를 보완하다, java.util.Objects 클래스 (0) | 2023.12.22 |
StrictMath 클래스와 Math클래스 (0) | 2023.12.22 |
수학계산 메서드 모음집, Math클래스 (0) | 2023.12.22 |