CodeGym/Java Blog/무작위의/Java.util.Random 클래스
John Squirrels
레벨 41
San Francisco

Java.util.Random 클래스

무작위의 그룹에 게시되었습니다
회원

Java의 java.util.Random 클래스는 무엇입니까?

java.util.Random 클래스는 의사 난수를 생성하는 데 사용됩니다 . 이 클래스에 의해 구현된 메서드는 int, double 및 float와 같은 다양한 임의 데이터 유형을 생성하는 데 사용됩니다. 따라서 난수에는 두 가지 주요 유형인 통계적 난수의사 난수 가 있습니다 . 통계적 난수(수학의 단순 난수와 유사)는 인식할 수 있는 패턴이 없는 값의 집합입니다. 예를 들어 주사위를 10번 굴리면 인식할 수 있는 패턴이 없는 임의의 숫자가 매번 생성됩니다.

의사 난수란 무엇입니까?

이것은 통계적으로 임의적이지만 알려진 시작점이 있는 값의 집합입니다 . Java에서 각 의사 난수는 알고리즘을 통해 생성됩니다. 따라서 일반적으로 java.util.Random이 난수를 생성할 때마다 주기가 ​​반복됩니다 . Java의 난수 생성기는 통계적으로 난수를 생성하지만 알려진 시작점을 사용하여 알고리즘에 의해 생성됩니다. 그것은 그 값을 의사 난수로 만듭니다.

java.util.Random 클래스는 암호학적으로 안전하지 않습니까?

난수 생성을 위해 구현된 알고리즘이 있기 때문에 암호학적으로 안전하지 않습니다. 결과적으로 알고리즘 작동 방식을 아는 사람은 민감한 데이터에 액세스하는 데 많은 시간이 걸리지 않습니다. 따라서 일부 보안 응용 프로그램으로 작업하거나 일부 민감한 데이터를 보호해야 하거나 임의 암호를 생성해야 하는 경우 이 클래스를 사용하지 않는 것이 좋습니다. 루도, 도박, 경기를 위한 던지기 또는 원하는 결과를 예측할 수 없는 기타 영역에서 주사위 굴림에 대한 난수 생성과 같은 많은 경우에 유용합니다.

방법 선언

이 클래스의 메서드를 사용하려면 먼저 패키지에서 다음과 같이 가져와야 합니다.
import java.util.Random;
가져온 후 다음과 같이 이 클래스의 개체를 만들어야 합니다.
Random randomNumbers = new Random();
더 나아가 java.util.Random 클래스를 사용하는 다양한 예를 살펴보겠습니다 .

import java.util.Random;

public class RandomClassExample1 {

	public static void main(String[] args) {

		// create random object
		Random randomNumbers = new Random();

		System.out.println("----------Random Boolean---------" );
		/*
		 * Returns the next pseudo random boolean value which
		 * may be used in a toss for a match
		 */
		boolean value = randomNumbers.nextBoolean();
		System.out.println("The random boolean value is: " + value);

		/*
		 * Returns the next pseudo random integer value between 0 and 5
		 * because if we use '6' then, it will give random numbers from 0 to 6
		 * hence incrementing it by 1 you can use it as a result of a dice roll
		 */
		System.out.println("\n----------Random Integer---------" );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );

		// return the next pseudo random long value
		Long val = randomNumbers.nextLong();
		System.out.println("\n----------Random Long---------" );
		System.out.println("Random Long value: " + val);

		/*
		 * Generates random bytes and puts them in an array, which you can for some
		 * desired unpredictable result that is summing all the values in the array
		 */

		System.out.println("\n----------Random Bytes---------" );
		byte[] bytes = new byte[8];
		randomNumbers.nextBytes(bytes);

		System.out.print("These are the random bytes = [ ");
		for (int i = 0; i < bytes.length; i++) {
			System.out.printf("%d ", bytes[i]);
		}
		System.out.println("]");
	}

}

산출

----------Random Boolean--------- Random Boolean 값: true ----------Random Integer--------- Die 롤: 4 다이 롤: 6 다이 롤: 1 다이 롤: 1 다이 롤: 3 ----------Random Long--------- Random Long 값: -6029959293504570824 ---- ------랜덤 바이트--------- 랜덤 바이트 = [ -37 90 -98 -70 23 -111 19 108 ]

행동 양식

이제 randomNumbers가 클래스의 개체 또는 인스턴스라는 점을 염두에 두고 이 클래스에서 제공하는 몇 가지 메서드에 대해 설명하겠습니다 .
  1. 복식() :

    이 메서드는 의사 난수로 생성된 double 값의 무한한 시리즈를 반환합니다. 이제 이 방법을 사용하는 방법을 살펴보겠습니다.

    randomNumbers.doubles();
  2. 정수() :

    이 메서드는 의사 난수로 생성된 정수 값의 무한한 계열을 반환합니다. 다음 스크립트를 사용하여 이 메서드를 호출할 수 있습니다.

    randomNumbers.ints();
  3. 롱() :

    이 메서드는 임의로 생성된 긴 값의 무한한 계열을 반환합니다. 다음 스크립트는 이 메서드를 호출하는 데 사용됩니다.

    randomNumbers.longs();
  4. 다음 부울() :

    이 메서드는 난수 생성기 시퀀스에서 균일하게 분포된 다음 의사 난수 부울 값을 반환합니다. 균일 분포는 직사각형 모양이며 분포의 모든 값이 동일한 확률을 가짐을 의미합니다. 이 방법을 사용하는 방법은 다음과 같습니다.

    randomNumbers.nextBoolean();
  5. nextInt(int n) :

    이 메서드는 0 포함 및 제공된 값 제외 사이의 난수 생성기 시퀀스에서 균일하게 분포된 다음 의사 난수 정수 값을 반환합니다. 이 방법을 사용하는 방법을 빠르게 살펴보십시오.

    randomNumbers.nextInt(10);

결론

이제 java.util.Random 이 무엇인지 , 다양한 메서드를 구현하는 방법과 이를 사용할 시나리오를 이해하셨기를 바랍니다. Java에서 이 클래스를 항상 사용할 수 있습니다. 자유롭게 연습하고 도움이 더 필요할 때마다 여기로 돌아오세요. 행복한 학습!
코멘트
  • 인기
  • 신규
  • 이전
코멘트를 남기려면 로그인 해야 합니다
이 페이지에는 아직 코멘트가 없습니다