Java nextInt 범위 - Java nextInt beom-wi

이 게시물은 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 및 기타 널리 사용되는 프로그래밍 언어를 사용하여 주석에 코드를 게시합니다.

우리처럼? 우리를 친구에게 소개하고 우리가 성장할 수 있도록 도와주세요. 행복한 코딩 🙂


Toplist

최신 우편물

태그