본문 바로가기
자바(Java)

Java의 무작위 클래스

by 코딩하는 욤욤이 2024. 2. 4.
반응형

Office 문서용 무료 .NET Java API 다운로드

 

Free .NET/JAVA Word, Excel, PDF, PowerPoint,Barcode Libraries

A free PDF Viewer library for developers to display, convert and print PDF documents on Windows Forms applications. Learn More Tutorials A free Word Viewer library for developers to display, convert and print Word documents on Windows Forms applications. L

www.e-iceblue.com

Java Random 클래스는 의사 난수 스트림을 생성하는 데 사용됩니다. 

 

포스팅에서는 Java 프로그래밍 언어에서 제공되는 Java Random 클래스, 해당 메서드 및 생성자에 대해 알아봅니다.

Java의 임의 클래스란 무엇입니까?

임의 클래스는 java.util 패키지의 일부입니다. 

 

Java Random 클래스의 인스턴스는 난수를 생성하는 데 사용됩니다. 

 

이 클래스는 정수, double, long, float 등의 난수를 생성하는 여러 가지 방법을 제공합니다.

 

난수 생성 알고리즘은 시드 값에서 작동합니다. 

 

제공되지 않으면 시드 값은 시스템 나노 시간에서 생성됩니다. 

 

두 개의 Random 인스턴스가 동일한 시드 값을 갖는 경우 동일한 난수 시퀀스를 생성합니다.

 

Java Random 클래스는 스레드로부터 안전합니다. 그러나 멀티스레드 환경에서 java.util.concurrent.ThreadLocalRandom 클래스를 사용하는 것이 좋습니다. 

 

무작위 클래스 인스턴스는 보안에 민감한 애플리케이션에는 적합하지 않습니다. 

 

그러한 경우에는 java.security.SecureRandom을 사용하는 것이 더 좋습니다.

java.lang.Object
    java.util.Random
 

Random 클래스에 의해 구현된 알고리즘은 각 호출에서 최대 32개의 의사 무작위 생성 비트를 제공할 수 있는 보호된 유틸리티 메서드를 사용합니다. 

 

이 클래스는 float, double 및 int와 같은 다양한 무작위 데이터 유형을 생성하는 다양한 메서드 호출을 제공합니다.

무작위 클래스 선언

public class Random
    extends Object
    implements Serializable
 

기본 난수 생성기

여러 번 숫자 시퀀스를 생성해야 합니다. 

 

일련의 숫자를 생성하는 것은 문제가 되지 않습니다. 

 

하지만 때로는 난수를 생성해야 하는 경우도 있습니다. 

 

자바에서는 Random 클래스를 사용하여 난수를 생성할 수 있습니다. 

 

Random 클래스를 사용하면 임의의 정수, 긴 숫자 및 이중 값을 생성할 수 있습니다.

 

난수를 생성하는 전체 프로그램은 다음과 같습니다.

import java.util.Random;
public class RandomNumberGenerator {
    public static void main(String a[]){
        Random rand = new Random();
        System.out.println("Random Integers:");
        System.out.println(rand.nextInt());
        System.out.println(rand.nextInt());
        System.out.println(rand.nextInt());
        System.out.println("Random Double Numbers:");
        System.out.println(rand.nextDouble());
        System.out.println(rand.nextDouble());
        System.out.println(rand.nextDouble());
        System.out.println("Random Long Numbers:");
        System.out.println(rand.nextLong());
        System.out.println(rand.nextLong());
        System.out.println(rand.nextLong());
    }
}
 

위 프로그램은 다음 출력을 생성합니다.

Random 클래스의 생성자


무작위의()

새로운 난수 생성기를 만듭니다. 해당 시드는 현재 시간을 기준으로 한 값으로 초기화됩니다.

 

구문

public Random()
{
    this(System.currentTimeMillis());

}
 

 Random() 생성자를 사용하는 Random 클래스의 전체 프로그램은 다음과 같습니다.

import java.util.Random;

public class RandomClassExample1 {
    public static void main(String[] args) {
        Random random = new Random();
        System.out.println(random.nextBoolean());
        System.out.println(random.nextDouble());
        System.out.println(random.nextFloat());
        System.out.println(random.nextInt());
        System.out.println(random.nextInt(20));
    }
}
 

위 프로그램은 다음 출력을 생성합니다.

무작위(긴 시드)

지정된 시드를 사용하여 새로운 난수 생성기를 만듭니다.

 

구문

public Random(long seed)
{
    setSeed(seed);
}
 

Random(long Seed) 생성자를 사용하는 Random 클래스의 전체 프로그램은 다음과 같습니다.

import java.util.Random;
public class RandomClassExample2 {
    public static void main(String[] args) {
        Random random = new Random(100);
        System.out.println("Using Random(long seed)Constructor");
        System.out.println(random.nextInt());
    }
}
 

위 프로그램은 다음 출력을 생성합니다.

무작위 클래스의 방법


1) java.util.Random.next() 메소드

next(int 비트) 메소드는 다음 의사 난수를 생성하는 데 사용됩니다. 

 

java.util.Random.next() 메소드는 무작위 비트인 bit 매개변수를 사용합니다. 

 

메서드 호출은 이 난수 생성기 시퀀스에서 다음 의사 난수 값을 반환합니다.

 

java.util.Random.next() 메소드 의 전체 프로그램은 다음과 같습니다.

import java.util.Random;
public class RandomClassExample3 {
    public static void main(String args[]) {
        // create random object
        Random randomno = new Random();
        // get next next pseudorandom value
        int value = randomno.nextInt();
        // check the value
        System.out.println("Value is: " + value);
    }
}
 

위 프로그램은 다음 출력을 생성합니다.

2) java.util.Random.nextBoolean() 메소드

nextBoolean() 메서드는 이 난수 생성기 시퀀스에서 균일하게 분포된 다음 의사 난수 부울 값을 가져오는 데 사용됩니다. 

 

java.util.Random.nextBoolean () 메서드는 부울 값을 반환합니다.

 

java.util.Random.next() 메소드 의 전체 프로그램은 다음과 같습니다.

import java.util.Random;
public class RandomClassExample4 {
    public static void main( String args[] ) {
        // create random object
        Random randomno = new Random();
        // get next next boolean value
        boolean value = randomno.nextBoolean();
        // check the value
        System.out.println("Value is: " + value);
    }
}
 

위 프로그램은 다음 출력을 생성합니다.

3) java.util.Random.nextBytes(byte[] bytes) 메소드

nextBytes(byte[] bytes) 메소드는 임의의 바이트를 생성하고 이를 사용자 제공 바이트 배열에 배치하는 데 사용됩니다. 

 

java.util.Random.nextBytes (byte[] bytes)는 무작위 바이트를 넣을 널이 아닌 바이트 배열인 매개변수로 바이트를 사용합니다.

 

java.util.Random.nextBytes() 메소드 의 전체 프로그램은 다음과 같습니다.

 

import java.util.Random;
public class RandomClassExample5 {
    public static void main( String args[] ) {
        // create random object
        Random randomno = new Random();
        // create a byte array
        byte[] nbyte = new byte[30];
        // put the next byte in the array
        randomno.nextBytes(nbyte);
        // check the value of the array
        System.out.println("Value of byte array: " + nbyte);
    }
}
 

위 프로그램은 다음 출력을 생성합니다.

4) java.util.Random.nextDouble() 메소드

nextDouble() 메서드는 이 난수 생성기 시퀀스에서 0.0과 1.0 사이에 균일하게 분포된 double 값을 갖는 다음 의사 난수를 가져오는 데 사용됩니다.

 

java.util.Random.nextDouble() 메소드 의 전체 프로그램은 다음과 같습니다.

import java.util.Random;
public class RandomClassExample6 {
    public static void main( String args[] ) {
        // create random object
        Random randomno = new Random();
        // check next double value
        System.out.println("Next double value: " + randomno.nextDouble());
    }
}
 

위 프로그램은 다음 출력을 생성합니다.

5) java.util.Random.nextFloat() 메소드

nextFloat() 메서드는 이 난수 생성기 시퀀스에서 0.0과 1.0 사이에 균일하게 분포된 다음 의사 난수 부동 소수점 값을 가져오는 데 사용됩니다.

 

java.util.Random.nextFloat() 메소드 의 전체 프로그램은 다음과 같습니다.

import java.util.Random;
public class RandomClassExample7 {
    public static void main( String args[] ) {
        // create random object
        Random randomno = new Random();
        // check next float value
        System.out.println("Next float value: " + randomno.nextFloat());
    }
}
 

위 프로그램은 다음 출력을 생성합니다.

6) java.util.Random.nextGaussian() 메소드

nextGaussian() 메서드는 이 난수 생성기 시퀀스에서 평균이 0.0이고 표준 편차가 1.0인 다음 의사 난수인 가우스("정규") 분포 double 값을 가져오는 데 사용됩니다.

 

java.util.Random.nextGaussian() 메소드 의 전체 프로그램은 다음과 같습니다.

import java.util.Random;
public class RandomClassExample8 {
    public static void main( String args[] ) {
        // create random object
        Random randomno = new Random();
        // check next Gaussian value
        System.out.println("Next Gaussian value: " + randomno.nextGaussian());
    }
}
 

위 프로그램은 다음 출력을 생성합니다.

7) java.util.Random.nextInt() 메소드

nextInt() 메서드는 이 난수 생성기 시퀀스에서 다음 의사 난수, 균일하게 분포된 int 값을 가져오는 데 사용됩니다.

 

java.util.Random.nextInt() 메소드 의 전체 프로그램은 다음과 같습니다.

import java.util.Random;
public class RandomClassExample9 {
    public static void main(String args[]) {
        // create random object
        Random randomno = new Random();
        // check next int value
        System.out.println("Next int value: " + randomno.nextInt());
    }
}
 

위 프로그램은 다음 출력을 생성합니다.

8) java.util.Random.nextInt(int n) 메소드

nextInt(int n) 메소드는 이 난수 생성기 시퀀스에서 가져온 의사 난수, 0(포함)과 지정된 값(제외) 사이에 균일하게 분포된 int 값을 가져오는 데 사용됩니다. 

 

java.util.Random.nextInt(int n)는 n을 매개변수로 사용합니다. 이는 반환될 난수의 한계입니다. 긍정적이어야 합니다.

 

예외: n이 양수가 아닌 경우 IT는 IllegalArgumentException을 발생시킵니다.

 

java.util.Random.nextInt(int n) 메소드 의 전체 프로그램은 다음과 같습니다.

import java.util.Random;
public class RandomClassExample10 {
    public static void main( String args[] ) {
        // create random object
        Random randomno = new Random();
        // check next int value
        System.out.println("Next int value: " + randomno.nextInt(10000));
    }
}
 

위 프로그램은 다음 출력을 생성합니다.

9) java.util.Random.nextLong() 메소드

nextLong() 메서드는 이 난수 생성기 시퀀스에서 균일하게 분포된 long 값을 갖는 다음 의사 난수를 반환하는 데 사용됩니다.

 

java.util.Random.nextLong() 메소드 의 전체 프로그램은 다음과 같습니다.

import java.util.Random;
public class RandomClassExample11 {
    public static void main( String args[] ) {
        // create random object
        Random randomno = new Random();
        // get next long value
        long value = randomno.nextLong();
        // check the value
        System.out.println("Long value is: " + value);
    }
}
 

위 프로그램은 다음 출력을 생성합니다.

10) java.util.Random.setSeed(긴 시드) 메소드

setSeed(long seed) 메소드는 단일 긴 시드를 사용하여 이 난수 생성기의 시드를 설정하는 데 사용됩니다. 

 

java.util.Random.setSeed(long Seed) 메소드는 초기 시드인 시드로 매개변수를 사용합니다.

 

java.util.Random.setSeed(long Seed) 메소드 의 전체 프로그램은 다음과 같습니다.

import java.util.Random;
public class RandomClassExample12 {
    public static void main( String args[] ) {
        // create random object
        Random randomno = new Random();
        // setting seed
        randomno.setSeed(20);
        // value after setting seed
        System.out.println("Object after seed: " + randomno.nextInt());
    }
}
 

위 프로그램은 다음 출력을 생성합니다.

난수 생성기 Java의 시드란 무엇입니까?

시드는 의사 난수 생성기 내부 상태의 초기 값이며 next(int) 메서드에 의해 유지됩니다. 단일 긴 시드를 사용하여 새로운 난수 생성기를 만듭니다.

 

new Random(seed)의 호출은 다음과 같습니다.

Random rnd = new Random();
rnd.setSeed(seed);

 

Random 클래스 시드 값을 변경하는 방법은 무엇입니까?

때로는 호출할 때마다 시퀀스 생성기 메서드를 호출할 때마다 동일한 난수 시퀀스를 생성해야 하는 경우가 있습니다. 

 

간단한 Random() 클래스 생성자를 사용하면 이를 달성할 수 없습니다. 

 

동일한 무작위 시퀀스를 생성하려면 시드를 Random() 생성자에 전달해야 합니다. 

 

setSeed() 메서드를 호출하여 시드를 변경할 수 있습니다. 동일한 시드를 전달할 때마다 동일한 무작위 시퀀스를 얻게 됩니다.

 

전체 프로그램은 Random 클래스에서 시드 값을 변경하는 과정을 보여줍니다.​​​​​​​

import java.util.Random;
public class RandomClassExample13 {
    public static void main(String a[]) {
        Random rnd = new Random(40);
        for (int i = 0; i < 3; i++) {
            System.out.println(rnd.nextInt(100));
        }
        System.out.println("Changing seed to change to sequence");
        rnd.setSeed(45);
        for (int i = 0; i < 3; i++) {
            System.out.println(rnd.nextInt(100));
        }
        System.out.println("Changing seed to change to sequence");
        rnd.setSeed(50);
        for (int i = 0; i < 3; i++) {
            System.out.println(rnd.nextInt(100));
        }
        System.out.println("Setting seed 40 to produce the previous sequence");
        rnd.setSeed(40);
        for (int i = 0; i < 3; i++) {
            System.out.println(rnd.nextInt(100));
        }
    }
}
 

위 프로그램은 다음 출력을 생성합니다.

 

이 포스팅에서는 Random 클래스, 해당 메서드, Java 프로그래밍 언어의 Random 클래스 생성자, Java 프로그램에서 Random 클래스를 사용하는 방법에 대해 배웠습니다.

반응형

'자바(Java)' 카테고리의 다른 글

Java의 대기열 인터페이스  (1) 2024.02.05
Java의 스택 클래스  (1) 2024.02.05
Java의 유형 캐스팅  (1) 2024.02.04
Java의 명명 규칙  (1) 2024.02.04
Spring Boo란 무엇일까?  (0) 2024.02.03