본문 바로가기
Java/Java 기초문법

[JAVA 기초] 난수생성 (Math.random와 Random 클래스)

by dev수니 2021. 3. 8.
반응형

 

 

자바에서 난수를 생성하는 방법이다. 랜덤뽑기와 같이 자바에서 랜덤으로 난수를 배출하는 프로그램이 존재하는데 Math클래스를 이용한 방법과 Random클래스를 이용한 방법이 있다.

 

 

 

 1  Math.random() 함수를 이용한 방법

 

Math.random()함수는 Math클래스 안에 있는 함수로 Math클래스는 최상위 클래스인 Object클래스 안에 있으므로 따로 import시켜줄 필요 없이 사용가능하다.

Math.random(); : 0.0이상 1.0미만의 실수를 추출해냄.

 

 

 

 

  • 1부터 5까지의 랜덤한 정수를 추출해내고 싶을 때

 

랜덤함수에 5를 곱한다. -> Math.random()*5  :  0.0이상 0.5미만의 실수 추출.

+1을 해준다. -> Math.random()*5 + 1 :  1이상 6미만의 실수 추출.

int타입으로 형변환 시켜준다. -> (int)(Math.random()*5 + 1) : 1이상 6미만의 정수 추출.

 

따라서 1부터 원하는 수n 까지의 정수를 구하는 방법은 다음과 같다.

(int)(Math.random()*n + 1)  또는  (int)(Math.random()*n) + 1

 

 

 


 

 

 

 2  Random 클래스를 이용한 방법

 

Random클래스는 종자값(seed)을 설정 할 수 있으며 java.util 패키지안에 있어 import 후 사용해야 하며 new를 통해 객체를 생성해 주어야 한다. 또한 다양한 타입의 난수를 생성할 수 있다.

nextBoolean()

true 혹은 false

nextInt()

-2147483648 ≤ x ≤ 2147483647 (Integer)

nextInt(int bound)

0 ≤ x < bound (Integer) (bound 값은 포함하지 않음)

nextLong()

-9223372036854775808L ≤ x ≤ 9223372036854775807L (Long)

nextFloat()

0.0 ≤ x < 1

nextDouble()

0.0 ≤ x < 1

nextGaussian()

평균 0.0이며 표준편차가 1.0인 정규분포

 

 

 

 

 

  • 1부터 45까지의 정수를 10개 추출해내고 싶을 때.

 

Random rd = new Random(); 으로 랜덤객체를 생성해 준다. (ctrl + space로 import필수!)

for문으로 묶어서 같은 반복을 10번 실행시킨다.rd. nextInt(45);+1하면 1부터 45까지의 정수가 랜덤하게 추출된다.

import java.util.Random;    // Random 클래스 import

Random rd = new Random();   // 랜덤객체 생성

for(int i=0; i<10; i++{   // 같은 반복을 10번 실행
    System.out.println(rd.nextInt(5)+1);   // 1부터 45까지의 정수
}

 

반응형

댓글