이 게시물은 Java에서 지정된 범위 사이에 임의의 정수를 생성하는 방법에 대해 설명합니다.
1. 사용 Random Class
우리는 사용할 수 있습니다 Random.nextInt() 0(포함)과 지정된 값(제외) 사이에서 의사 무작위로 생성된 int 값을 반환하는 메서드입니다.
다음 코드는 표현식을 사용합니다. nextInt(max - min + 1) + min 사이의 임의의 정수를 생성하기 위해 min 그리고 max. 그것은 다음과 같이 작동합니다 nextInt(max - min + 1) 0과 0 사이의 임의의
정수를 생성합니다. (max - min), 그리고 추가 min 그것 사이에 임의의 정수가 발생할 것입니다 min 에게 max.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | importjava.util.Random; classMain { /** * [min, max] 범위의 의사 난수 정수 생성 * @param `min` 범위의 시작 값(포함) * @param `max` 범위의 끝 값(포함) */ public staticintrand(intmin,int max) { if(min>max||(max-min +1>Integer.MAX_VALUE)) { thrownewIllegalArgumentException("Invalid range"); } returnnew Random().nextInt(max-min +1)+min; } publicstaticvoidmain(String[] args) { intmin= 1,max=10; for (inti=0;i<10;i++){ System.out.println(rand(min,max)); } } } |
다운로드 코드 실행
Java 8 이상에서는 다음을 사용할 수 있습니다. ints() 에서 제공하는 방법 Random 아래와 같이
지정된 범위 내에서 의사 난수 int 값의 무제한 스트림을 반환하는 클래스입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | importjava.util.Random; classMain { /** * [min, max] 범위의 의사 난수 정수 생성 * @param `min` 범위의 시작 값(포함) * @param `max` 범위의 끝 값(포함) */ public staticintrand(intmin,int max) { if(min>max){ thrownew IllegalArgumentException("Invalid range"); } Random rand=newRandom(); returnrand.ints(min,(max +1)) // IntStream .findFirst() // OptionalInt .getAsInt(); // int } publicstaticvoidmain(String[] args) { intmin= 1,max=10; for (inti=0;i<10;i++){ System.out.println(rand(min,max)); } } } |
다운로드 코드 실행
2. 사용 Math class
우리는 또한 사용할 수 있습니다 Math.random() 내부적으로 사용하는 Random.nextDouble(), 범위 내에서 의사 난수 double을 반환합니다. [0.0, 1.0).
다음 코드는 다음 표현식을 사용하여 사이에 임의의 정수를 생성합니다. min 그리고 max.
(int)(Math.random()* ((max-min)+ 1))+min |
그것은 다음과 같이 작동합니다 Math.random() 범위에서 임의의 double 값을 생성합니다. [0.0, 1.0). 우리가 그것을 곱할 때 ((max - min) + 1), 하한은 0으로 유지되지만 상한은 (max - min, max - min + 1). 이제 int로 캐스팅하면 범위가됩니다. [0, max - min], 그리고 추가 시 min, 범위는 [min, max].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | classMain { /** * [min, max] 범위의 의사 난수 정수 생성 * @param `min` 범위의 시작 값(포함) * @param `max` 범위의 끝 값(포함) */ publicstaticintrand(int min,intmax) { if(min>max){ thrownewIllegalArgumentException("Invalid range"); } doublerand= Math.random(); return (int)(rand*((max -min)+1))+ min; } publicstaticvoid main(String[]args) { intmin=1,max= 10; for(inti= 0;i<10; i++){ System.out.println(rand(min,max)); } } } |
다운로드 코드 실행
3. 사용 ThreadLocalRandom Class
또 다른 옵션은 ThreadLocalRandom 클래스, 하위 클래스 java.util.Random 다중 스레드 환경을 위한 클래스. 이 클래스는 Java 7에서 도입되었습니다.
공유하는 것보다 이 클래스를 사용하는 것이 좋습니다. Random 동시 프로그램의 개체. ThreadLocalRandom 임의의 정수가 이제 동일한 스레드 내에서 로컬로 생성되므로 더 나은 성능을 제공합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | importjava.util.concurrent.ThreadLocalRandom; class Main { /** * [min, max] 범위의 의사 난수 정수 생성 * @param `min` 범위의 시작 값(포함) * @param `max` 범위의 끝 값(포함) */ publicstaticintrand(intmin, intmax) { if (min>max){ thrownewIllegalArgumentException("Invalid range"); } returnThreadLocalRandom.current() .nextInt(min,max+1); } publicstaticvoid main(String[]args) { intmin=1,max= 10; for(inti= 0;i<10; i++){ System.out.println(rand(min,max)); } } } |
다운로드 코드 실행
4. 사용 SecureRandom Class
우리는 또한 사용할 수 있습니다 SecureRandom 클래스, 하위 클래스 java.util.Random 암호학적으로 강력한 임의의 정수 생성기를 제공하는 클래스입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | importjava.security.SecureRandom; classMain { /** * [min, max] 범위의 의사 난수 정수 생성 * @param `min` 범위의 시작 값(포함) * @param `max` 범위의 끝 값(포함) */ publicstaticintrand(intmin, intmax) { if (min>max||(max-min+1> Integer.MAX_VALUE)){ throw newIllegalArgumentException("Invalid range"); } // `SecureRandom` 인스턴스를 얻고 시드 바이트로 인스턴스를 시드합니다. // generateSeed 메소드 사용 SecureRandom random= newSecureRandom(); random.setSeed(random.generateSeed(20)); // nextInt()는 java.util.Random 클래스에서 상속됩니다. return random.nextInt((max-min) +1)+min; } publicstaticvoidmain(String[] args) { intmin= 1,max=10; for (inti=0;i<10;i++){ System.out.println(rand(min,max)); } } } |
다운로드 코드 실행
5. Apache Commons Math 사용하기
Apache Commons를 사용하여 RandomDataGenerator 제공된 인스턴스를 사용하여 RandomGenerator 또는 임의성의 소스로 기본 임의 생성기를 사용합니다. RandomData 도 사용할 수 있지만 지금은 더 이상 사용되지 않습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import org.apache.commons.math3.random.JDKRandomGenerator; import org.apache.commons.math3.random.RandomDataGenerator; classMain { /** * [min, max] 범위의 의사 난수 정수 생성 * @param `min` 범위의 시작 값(포함) * @param `max` 범위의 끝 값(포함) */ publicstaticintrand(int min,intmax) { if(min>max){ thrownewIllegalArgumentException("Invalid range"); } returnnewRandomDataGenerator(new JDKRandomGenerator()) .nextInt(min,max); } publicstaticvoidmain(String[] args) { intmin= 1,max=10; for (inti=0;i<10;i++){ System.out.println(rand(min,max)); } } } |
코드 다운로드
Java에서 지정된 범위 사이에 임의의 정수를 생성하는 것이 전부입니다.
읽어 주셔서 감사합니다.
우리의 온라인 컴파일러 C, C++, Java, Python, JavaScript, C#, PHP 및 기타 널리 사용되는 프로그래밍 언어를 사용하여 주석에 코드를 게시합니다.
우리처럼? 우리를 친구에게 소개하고 우리가 성장할 수 있도록 도와주세요. 행복한 코딩 🙂