자바 난수 범위지정 - jaba nansu beom-wijijeong

스폰서 링크

0에서부터 시작하는 것이 아니라, 파라미터로 지정해 준, 하한값과 상한값 사이의 숫자에서 난수를 출력하는 메소드(함수)입니다.

"상한값 - 1"까지가 아니라 정확히 상한값까지입니다. 즉, 2에서 5까지 지정했다면, 2, 3, 4, 5 이렇게 2~5를 출력합니다. 좀더 직관적으로 사용할 수 있게끔 하기 위해서입니다.

randomRange(하한값, 상한값)

이렇게 지정해 주면 됩니다.

지정해준 범위 내에서만, 난수 출력 예제

소스 파일명: Example.java

public class Example {
  public static void main(String[] args) {

    // 3에서 12까지 범위의 정수를 랜덤하게 20개 출력
    for (int i = 1; i <= 20; i++)
      System.out.println(randomRange(3, 12));

  }

  // 지정된 범위의 정수 1개를 램덤하게 반환하는 메서드
  // n1 은 "하한값", n2 는 상한값
  public static int randomRange(int n1, int n2) {
    return (int) (Math.random() * (n2 - n1 + 1)) + n1;
  }

}

컴파일 및 실행 결과 화면:

D:\Z>javac Example.java && java Example
8
10
4
5
5
7
9
8
12
4
10
6
3
4
11
11
4
4
12
7

D:\Z>

▶▶ Java/자바] Math.random() 사용법; 랜덤(난수) 정수(int) 구하기 예제 소스

더 읽기:

자바 | Java

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.

블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면

자바 난수 범위지정 - jaba nansu beom-wijijeong
주소를 리더기에 등록하시면 됩니다.

자바의 정석으로 임의의 정수만들기(기초편 109쪽)를 공부하던 중에, 학교에서 C언어로 과제할 때 난수 생성을 자주 했던 기억이 있어서 뭔가 앞으로 두고두고 쓰일 함수라는 예감에 포스팅하게 되었다.

Math.random() 메서드는 0.0과 1.0사이의 범위에 속하는 하나의 double값을 반환하는 함수이다.
반환하는 범위는 0.0 이상 1.0 미만임에 주의해야 한다.

Math.random()을 간단하게 X라고 하면, 부등식을 이용해서 자신이 원하는 범위의 수를 표현할 수 있다. 

0.0 <= X < 1.0

예를 들어 1과 10 미만의 '실수'를 생성하고 싶다면,

0.0 * 9 + 1 <= X * 9 + 1 < 1.0 * 9 + 1 

10과 100 미만의 '정수'를 생성하고 싶다면, 형변환을 섞어주면 된다.

(int)(0.0 * 90) + 10 <= (int)(X * 90) + 10 < (int)(10.0 * 90) + 10

다음은 Math.random() 을 이용해 특정 범위의 난수와 정수를 생성하는 코드이다.

class practice {
	public static void main(String args[]) {
		
		//double 생성
		System.out.println("0이상 1미만의 난수 생성하기 : " + Math.random());
		System.out.println("0이상 100미만의 난수 생성하기 : " + Math.random()*100);
		
		//int 생성
		System.out.println("0이상 3미만의 정수 생성하기 : " + (int)(Math.random()*3));
		System.out.println("1이상 10미만의 정수 생성하기 : " + ((int)(Math.random()*9) + 1));
		System.out.println("10이상 1000미만의 정수 생성하기 : " + ((int)(Math.random()*990) + 10));
	}
}

출력 결과는 아래에 사진 첨부한다!

자바 난수 범위지정 - jaba nansu beom-wijijeong
출력 결과

  1. Java에서ThreadLocalRandom클래스를 사용하여 난수 생성
  2. Java에서Math클래스를 사용하여 난수 생성
  3. Java에서Random클래스를 사용하여 난수 생성
  4. Java에서Random클래스를 사용하여 난수 생성
  5. Java에서Random클래스 및IntStream을 사용하여 난수 생성
  6. Java에서nextFloat메소드를 사용하여 난수 생성
  7. Java에서RandomData클래스를 사용하여 난수 생성
  8. Java에서SecureRandom클래스를 사용하여 난수 생성
  9. Java에서RandomUtils클래스를 사용하여 난수 생성

이 튜토리얼에서는 Java에서 지정된 범위 내에서 난수를 생성하는 방법을 소개합니다.

ThreadLocalRandom클래스의nextInt()메소드,Math클래스의random()메소드, Java의nextInt()메소드와 같이 Java에서 난수를 생성하는 여러 가지 방법이 있습니다. Random클래스,Random클래스의ints()메소드,Random클래스 및RandomUtil클래스의nextFloat()메소드 등.

Java에서ThreadLocalRandom클래스를 사용하여 난수 생성

Java 동시 패키지는nextInt()메소드가있는ThreadLocalRandom클래스를 제공합니다. 이 메서드는 지정된 범위 내에서 임의의 정수를 생성 할 수 있습니다. 아래 예를 참조하십시오.

import java.util.concurrent.ThreadLocalRandom;

public class SimpleTesting{
    public static void main(String[] args) { 
        int min_val = 10;
        int max_val = 100;
        ThreadLocalRandom tlr = ThreadLocalRandom.current();
        int randomNum = tlr.nextInt(min_val, max_val + 1);
        System.out.println("Random Number: "+randomNum);
    }
}

출력:

Value in double: 12.9
Value in int: 12

Java에서Math클래스를 사용하여 난수 생성

Java Math클래스를 사용하여 지정된 범위 내에서 난수를 생성 할 수 있습니다. 여기서는Math클래스의random()메서드를 사용하여 난수를 얻습니다. 아래 예를 참조하십시오.

public class SimpleTesting{
    public static void main(String[] args) { 
        int min_val = 10;
        int max_val = 100;
        double randomNum = Math.random() * ( max_val - min_val );
        System.out.println("Random Number: "+randomNum);
    }
}

출력:

Id: 1212
Name: Samre

Java에서Random클래스를 사용하여 난수 생성

Java의Random클래스는 정수 값을 리턴하는nextInt()메소드를 사용하여 지정된 범위 내에서 임의의 정수를 생성 할 수 있습니다. 아래 예를 참조하십시오.

import java.util.Random;
public class SimpleTesting{
    public static void main(String[] args) { 
        int min_val = 10;
        int max_val = 100;
        Random ran = new Random();
        int x = ran.nextInt(max_val) + min_val;
        System.out.println("Random Number: "+x);
    }
}

출력:

Id: 1212
Name: Samre

Java에서Random클래스를 사용하여 난수 생성

이것은 지정된 범위 내에서 임의의 정수를 얻기위한 또 다른 솔루션입니다. 여기서는 다른 매개 변수를 가진Random클래스의nextInt()메소드를 사용합니다. 아래 예를 참조하십시오.

import java.util.Random;
public class SimpleTesting{
    public static void main(String[] args) { 
        int min_val = 10;
        int max_val = 100;
        Random rand = new Random();
        int randomNum = min_val + rand.nextInt((max_val - min_val) + 1);
        System.out.println("Random Number: "+randomNum);
    }
}

출력:

Random Number: 75

Java에서Random클래스 및IntStream을 사용하여 난수 생성

여기서는 난수 스트림을 반환하는Random클래스의ints()메서드를 사용합니다. forEach()메소드를 사용하여ints()메소드에 의해 생성 된 모든 임의의 정수를 인쇄합니다. 아래 예를 참조하십시오.

import java.util.Random;
import java.util.stream.IntStream;
public class SimpleTesting{
    public static void main(String[] args) { 
        int min_val = 10;
        int max_val = 100;
        Random rand = new Random();
        IntStream stream = rand.ints(5, min_val, max_val);
        stream.forEach(System.out::println);
    }
}

출력:

94
35
90
74
47

Java에서nextFloat메소드를 사용하여 난수 생성

Random클래스는 플로트 유형 난수를 생성하는nextFloat()메소드를 제공합니다. 실수 형 난수를 얻으려면이 방법이 유용합니다. 아래 예를 참조하십시오.

import java.util.Random;
public class SimpleTesting{
    public static void main(String[] args) { 
        int min_val = 10;
        int max_val = 100;
        Random rand = new Random();
        float rand_val = rand.nextFloat() * (max_val - min_val);
        System.out.println(rand_val);
    }
}

출력:

71.88764

Java에서RandomData클래스를 사용하여 난수 생성

아파치 공용 라이브러리로 작업하는 경우RandomData클래스를 사용하십시오. 이 클래스는 정수 값을 반환하는nextInt()메소드를 제공합니다. 이 방법을 사용하여 지정된 범위 내에서 임의의 정수를 생성 할 수 있습니다. 아래 예를 참조하십시오.

import org.apache.commons.math.random.RandomData;
import org.apache.commons.math.random.RandomDataImpl;
public class SimpleTesting{
    public static void main(String[] args) { 
        int min_val = 10;
        int max_val = 100;
        RandomData randomData randomData = new RandomDataImpl();
        int number = randomData.nextInt(min_val, max_val);
        System.out.println(number);
    }
}

출력:

72

Java에서SecureRandom클래스를 사용하여 난수 생성

SecureRandom 클래스는 보안 난수를 생성하는 데 사용되는 Java의security패키지에 속합니다. 여기서는Date클래스를 사용하여 시드를 생성 한 다음nextInt()메서드를 사용하여 임의의 정수를 생성합니다. 아래 예를 참조하십시오.

import java.security.SecureRandom;
import java.util.Date;
public class SimpleTesting{
    public static void main(String[] args) { 
        int min_val = 10;
        int max_val = 100;
        SecureRandom rand = new SecureRandom();
        rand.setSeed(new Date().getTime());
        int randomNum = rand.nextInt((max_val - min_val) + 1) + min_val;
        System.out.println(randomNum);
    }
}

출력:

65

Java에서RandomUtils클래스를 사용하여 난수 생성

아파치 공용 라이브러리의RandomUtil클래스를 사용하여 임의의 정수를 생성 할 수 있습니다. 이 클래스의nextInt()메소드는 정수 클래스를 리턴합니다. 아래 예를 참조하십시오.

import org.apache.commons.lang3.RandomUtils;
public class SimpleTesting{
    public static void main(String[] args) { 
        int min_val = 10;
        int max_val = 100;
        RandomUtils random = new RandomUtils();
        int randomNum = random.nextInt(min_val, max_val);
        System.out.println(randomNum);
    }
}

출력:

66

관련 문장 - Java Math

  • Java에서 계승을 계산하는 방법
  • Java에서 수학 표현식 평가
  • Java에서 유클리드 거리 계산
  • Java에서 두 점 사이의 거리 계산
  • 관련 문장 - Java Number

  • Java에서 계승을 계산하는 방법
  • Java에서 수학 표현식 평가
  • Java에서 유클리드 거리 계산
  • Java에서 두 점 사이의 거리 계산