본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

JAVA

java.util.Random 클래스

random()하면 수학용 Math클래스에서의 random메소드가 있다.

https://standout.tistory.com/1207

 

수학계산 메서드 모음집, Math클래스

Math클래스 Math클래스는 접근 제어자가 private이기에 다른클래스에서 Math 인스턴스를 생성할 수 없다. Math클래스의 메서드는 모두 static으로 구성된다. 기본적으로 올림, 버림, 반올림을 할 수 있다

standout.tistory.com

 

 

다른방법으로 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