리뷰

Java에서 난수 생성

Java에서 난수 생성

일련의 난수 생성은 때때로 발생하는 일반적인 작업 중 하나입니다. Java에서는 java.util.Random 클래스를 사용하여 간단하게 수행 할 수 있습니다.

API 클래스를 사용하는 첫 번째 단계는 프로그램 클래스 시작 전에 import 문을 추가하는 것입니다.

다음으로 랜덤 오브젝트를 생성합니다 :

랜덤 오브젝트는 간단한 난수 생성기를 제공합니다. 객체의 메소드는 난수를 선택할 수있는 기능을 제공합니다. 예를 들어 nextInt () 및 nextLong () 메서드는 각각 int 및 long 데이터 형식의 값 범위 (음수 및 양수) 내에있는 숫자를 반환합니다.

반환되는 숫자는 임의로 int 및 long 값으로 선택됩니다.

특정 범위에서 임의의 숫자 선택

일반적으로 생성되는 난수는 특정 범위 (예 : 1에서 40 사이) 여야합니다. 이를 위해 nextInt () 메소드는 int 매개 변수를 승인 할 수도 있습니다. 숫자 범위의 상한을 나타냅니다. 그러나 상한값은 선택할 수있는 숫자 중 하나로 포함되지 않습니다. 혼란 스러울 수 있지만 nextInt () 메소드는 0에서 위쪽으로 작동합니다. 예를 들면 다음과 같습니다.

0에서 39까지의 난수 만 선택합니다. 1로 시작하는 범위에서 선택하려면 nextInt () 메소드의 결과에 1을 추가하십시오. 예를 들어, 1에서 40 사이의 숫자를 선택하려면 결과에 하나를 추가하십시오.

범위가 1보다 큰 수에서 시작하면 다음을 수행해야합니다.

  • 상한 번호에서 시작 번호를 뺀 다음 1을 더하십시오.
  • nextInt () 메소드의 결과에 시작 번호를 추가하십시오.

예를 들어, 5에서 35 사이의 숫자를 선택하려면 상한 수는 35-5 + 1 = 31이되고 결과에 5를 추가해야합니다.

랜덤 클래스는 얼마나 무작위입니까?

Random 클래스는 결정적인 방식으로 난수를 생성한다는 점을 지적해야합니다. 임의성을 생성하는 알고리즘은 시드라는 숫자를 기반으로합니다. 시드 번호가 알려진 경우 알고리즘에서 생성 될 번호를 알아낼 수 있습니다. 이를 증명하기 위해 Neil Armstrong이 처음 달에 시드 번호로 밟은 날짜부터 1969 년 7 월 20 일까지의 숫자를 사용합니다.

이 코드를 누가 실행하든 "임의의"숫자 시퀀스는 다음과 같습니다.

기본적으로 사용되는 시드 번호는 다음과 같습니다.

1970 년 1 월 1 일 이후의 현재 시간 (밀리 초)입니다. 일반적으로 대부분의 경우 충분한 난수를 생성합니다. 그러나 동일한 밀리 초 내에 생성 된 두 개의 난수 생성기는 동일한 난수를 생성합니다.

안전한 난수 생성기 (예 : 도박 프로그램)가 있어야하는 응용 프로그램에 Random 클래스를 사용할 때도주의하십시오. 응용 프로그램이 실행되는 시간에 따라 시드 번호를 추측 할 수 있습니다. 일반적으로 난수가 절대적으로 중요한 응용 프로그램의 경우 난수 개체에 대한 대안을 찾는 것이 가장 좋습니다. 특정 임의의 요소 (예 : 보드 게임의 주사위)가 필요한 대부분의 응용 프로그램에서는 정상적으로 작동합니다.