이 장에서는 먼저 Java 랜덤 숫자를 생성하는 몇 가지 방법을 설명하고 예를 통해 보여줍니다.
광범위하게 말하면 Java에서 임의의 숫자를 생성하는 세 가지 방법이 있습니다.
(01). System.CurrentTimeMillis ()를 사용하여 현재 시간의 긴 유형 수의 밀리 초를 얻으십시오.
(02). Math.random ()을 통해 0과 1 사이의 이중 값을 반환하십시오.
(03). 랜덤 클래스를 통해 임의의 숫자를 생성합니다. 이것은 강력한 기능을 갖춘 전문적인 랜덤 툴 클래스입니다. 첫 번째 방법은 System.CurrentTimeMillis ()를 사용하여 임의의 숫자를 얻습니다
System.CurrentTimeMillis ()를 통해 난수를 가져옵니다. 실제로는 현재 밀리 초 숫자를 얻고 있습니다. 사용 방법은 다음과 같습니다.
최종 Long L = System.CurrentTimeMillis ();
int 유형의 정수를 얻으려면 위의 결과를 int로 변환하십시오. 예를 들어 [0, 100) 사이에 int 정수를 얻습니다. 이 방법은 다음과 같습니다.
최종 Long L = System.CurrentTimeMillis (); 최종 int I = (int) (L % 100);
두 번째 방법은 math.random ()을 사용하여 임의 숫자를 얻습니다
Math.random ()을 통해 임의의 숫자를 얻습니다. 실제로 0 (포함)과 1 (포함되지 않음) 사이의 이중 값을 반환합니다. 사용 방법은 다음과 같습니다.
최종 이중 D = Math.Random ();
int 유형의 정수를 얻으려면 위의 결과를 int로 변환하십시오. 예를 들어 [0, 100) 사이에 int 정수를 얻습니다. 이 방법은 다음과 같습니다.
최종 이중 d = math.random (); 최종 int i = (int) (d*100);
세 번째 유형은 랜덤 클래스를 사용하여 임의의 숫자를 얻습니다.
임의의 클래스를 통해 임의의 숫자를 얻습니다.
사용 방법은 다음과 같습니다.
(01) 임의의 객체를 만듭니다. 다음과 같이 임의의 객체를 만드는 두 가지 방법이 있습니다.
random random = new random (); // 기본 생성자 랜덤 랜덤 = new random (1000); // 종자 번호 지정
(02) 임의의 객체를 통해 임의의 숫자를 얻습니다. 랜덤 값 유형을 지원합니다 : 부울, 바이트, int, 롱, 플로트, 이중.
예를 들어 [0, 100) 사이에 int 정수를 얻습니다. 이 방법은 다음과 같습니다.
int i2 = random.nextint (100);
랜덤의 기능 인터페이스
// 생성자 (i) : 새 랜덤 번호 생성기를 만듭니다. random () // 생성자 (ii) : 단일 긴 씨앗을 사용하여 새 랜덤 숫자 생성기를 만듭니다 : public random (long seed) {setseed (seed); } 다음 메소드는이를 사용하여 랜덤 번호 생성기의 상태를 저장합니다. 랜덤 (긴 씨앗) 부울 NextBoolean () // 다음 "부울 유형"의사 무인 번호를 반환합니다. void nextbytes (byte [] buf) // 랜덤 바이트를 생성하여 바이트 배열 buf에 배치하십시오. Double NextDouble () // "[0.0, 1.0) 사이의 이중 유형의 임의 숫자를 반환합니다. float nextFloat () // "[0.0, 1.0) 사이의 플로트 유형의 임의 번호를 반환합니다. int nextint () // 다음 "int type"random number를 반환합니다. int nextInt (int n) // "int type 사이의 int 유형 [0, n)"을 반환합니다. Long NextLong () // 다음 "Long Type"Random Number를 반환합니다. 동기화 된 Double Nextgaussian () //는 가우시안 ( "정상") 분포에서 이중 값 인 다음 "이중 유형"랜덤 번호를 반환하며 평균 값은 0.0이고 표준 편차는 1.0입니다. 동기화 된 void setseed (긴 씨앗) // 단일 긴 씨앗을 사용 하여이 임의 번호 생성기의 씨앗을 설정합니다.임의의 숫자 예제를 얻으십시오
EG1 :
다음은 임의의 숫자를 얻는 위의 세 가지 방법을 보여주는 예입니다. 소스 코드는 다음과 같습니다 (randomtest.java) :
java.util.random; import java.lang.math;/*** java 랜덤 번호 테스트 프로그램. 임의의 숫자를 얻는 3 가지 방법이 있습니다 : * (01), System.CurrentTimeMillis ()를 사용하여 현재 시간에 긴 유형 수의 밀리 초를 얻습니다. * (02), Math.random ()에서 0에서 1 사이의 이중 값을 반환합니다. * (03) 임의의 클래스를 통해 임의의 숫자를 생성합니다. 이것은 강력한 기능을 갖춘 전문적인 랜덤 툴 클래스입니다. * * @author skywang * @email [email protected] */public class randomtest {public static void main (String args []) {// 시스템의 currentTimeMillis ()를 통해 임의의 숫자 testystemTimeMillis ()를 반환합니다. // math의 random ()을 통해 임의의 숫자 testmathrandom ()을 반환합니다. // "1000의 시드"로 새로운 랜덤 객체를 생성 하고이 시드 testrandomapis (새로운 랜덤 (1000), "1st random (1000)")을 통해 임의의 API를 테스트합니다. testrandomapis (새로운 랜덤 (1000), "2 차 무작위 (1000)"); // "기본 시드"랜덤 객체를 만들고이 시드 testrandomapis (new random (), "1st random ()")을 통해 임의의 API를 테스트합니다. testrandomapis (new random (), "2nd random ()"); } / ** * 임의의 숫자 -01 : 테스트 시스템의 currentTimeMillis () * / private static void testystemMillis () {// 최종 long l = system.currentTimeMillis (); // [0, 정수 최종 INT I = (int) (l % 100)를 가져옵니다. System.out.printf ( "/n ---- 시스템 .CurrentTimeMillis () ---/nl =%si =%s/n", l, i); } / ** * 임의의 숫자 -02 : 테스트 수학의 랜덤 () * / 개인 정적 void testmathrandom () {// 수학의 랜덤 () 함수, 범위 [0.0, 1.0) 최종 double d = math.random (); // [0, 100) 최종 int i = (int) (d*100) 사이에 정수를 가져옵니다. System.out.printf ( "/n ----- math.random () ---/nd =%si =%s/n", d, i); } / ** * RECOND Random Num // 랜덤 부울 값을 얻습니다 boolean b = random.nextBoolean (); // 랜덤 어레이 buf [] byte [] buf = new Byte [buffer_len]을 가져옵니다. random.nextbytes (buf); // 임의의 이중 값, 범위 [0.0, 1.0) double d = random.nextDouble (); // 임의의 플로트 값, 범위 [0.0, 1.0) float f = random.nextfloat (); // 임의의 int 값 가져 오기 int i1 = random.nextInt (); // [0,100) int i2 = random.nextint (100) 사이에 임의의 int 값을 가져옵니다. // 임의의 가우시안 분포를 가져옵니다. double g = random.nextgaussian (); // 임의의 긴 값을 가져옵니다. l l = random.nextLong (); System.out.printf ( "/n ---%s ----/nb =%s, d =%s, f =%s, i1 =%s, i2 =%s, g =%s, l =%s, buf = [", title, b, d, f, i1, i2, g, l); for (byte bt : buf) system.out.printf ( "%s,", bt); System.out.println ( "]"); }}
EG2 :
문제 : 소수점 이후에 두 자리 숫자가 유지되면서 (-10,10) 사이에 난수를 생성합니다.
해결책:
1. 랜덤 번호 생성 함수 랜덤 r = 새로운 랜덤 (); r.nextfloat (); // 부동 소수점 랜덤 숫자 (0,1) 사이. 위의 랜덤 숫자에 10을 곱하여 (0,10) 사이에 랜덤 숫자를 얻습니다.
2. 숫자의 양수와 음수를 제어하기 위해 부울 유형의 랜덤 번호를 생성합니다. r.nextBoolean ();
3. 소수점 이하 두 자리를 유지하는 방법 : Math. Floor (N*100+0.5)/100; 얻은 숫자는 이중 유형입니다.
코드는 다음과 같습니다.
java.util.*; 공개 클래스 크리터 랑 (Public Class Createrandom) {public float numrandom () {float num; 랜덤 r = 새로운 랜덤 (); float value = (float) (math.floor (r.nextfloat ()*1000+0.5)/100); 부울 B = R.NextBoolean (); if (b) {num = 값; } else {num = 0- 값; } return num; } public static void main (String [] args) {Createrandom Cr = New Createrandom (); float num = cr.numrandom (); System.out.print (num); }}