[JAVA] Random 클래스에 대해서
Random 클래스에 대해서
소프트웨어를 개발할 때 난수(random number)에 대한 필요성은 빈번히 발생한다.
특히 게임은 주사위를 던지거나 카드를 섞을 때 난수를 사용한다.
java.util 패키지의 일부인 Random 클래스는 의사난수 발생기(Pseudorandom number generator)이다.
Random 클래스는 일정 범위의 값들에서 한 개의 수를 임의로 선택한다.
* Random 클래스의 method
Random() | 구성자 : 새로운 랜덤 발생기를 생성한다. |
float nextFloat() | 0.0(값 포함)과 1.0(값 포함하지 않음) 사이의 난수를 반환한다. |
int nextInt() | 가능한 모든 int 값(양수와 음수)에 걸친 범위의 난수를 반환한다. |
int nextInt(int num) | 0 부터 num-1까지 범위에 있는 난수를 반환한다. |
Random 클래스는 new Random() 을 사용하여 객체를 생성한다.
int 형의 정수 랜덤값을 추출하기 위해서는 생성한 Random 객체에 nextInt() 메소드를 호출하면 된다.
nextInt 호출시에 파라미터를 넣어주지 않으면 int의 전체범위에서 랜덤값을 추출한다.
(int 전체 범위 : -2,147,483,648 ~2,147,483,647 )
nextInt() 에 숫자를 넣어주면, 0~num-1 까지의 범위에서 랜덤값을 추출한다.
ex> nextInt(10) : 0~9
여기서 시작 범위를 변경하고 싶다면 그 수만큼 더해주면 된다.
2~11 범위에서 값을 추출하고 싶다면, nextInt(10)+2 를 하면 된다.
밑에 예제를 살펴보면 이해가 될 것이다.
import java.util.Random; public class RandomTest{ public static void main(String[] args){ // Random() 객체 생성 Random generator = new Random(); int num1; float num2; // int 값의 범위에서 정수 랜덤값을 추출한다. // (-2,147,483,648 ~2,147,483,647) num1= generator.nextInt(); System.out.println("A random integer: "+num1); // 0~9 사이의 정수 랜덤값을 추출한다. num1= generator.nextInt(10); System.out.println("Form 0 to 9: " + num1); // 1~10 사이의 정수랜덤값을 추출한다. num1= generator.nextInt(10) + 1; System.out.println("Form 1 to 10 : " + num1); // 20~34 사이의 정수 랜덤값을 추출한다. num1= generator.nextInt(15) + 20; System.out.println("Form 20 to 34: " + num1); // -10 ~ 9 사이의 정수 랜덤값을 추출한다. num1= generator.nextInt(20) - 10; System.out.println("Form -10 to 9: " + num1); // 0.0(포함) ~ 1.0(포함안함) 사이의 난수를 추출한다. num2= generator.nextFloat(); System.out.println("A random float(between 0-1): " + num2); // 0.0 ~ 5.9999999 사이의 난수를 추출한다. // int로 형 변환(0~5) 후 1을 더한다. // 1~6 사이의 난수를 출력한다. num2 = generator.nextFloat()*6; num1 = (int)num2 + 1; System.out.println("From 1 to 6: " + num1); } } |
* 결과 화면
출처: https://hyeonstorage.tistory.com/160?category=557602 [개발이 하고 싶어요]
'JAVA > Java' 카테고리의 다른 글
[JAVA] Wrapper class 란? 그리고 AutoBoxing (0) | 2019.09.30 |
---|---|
[JAVA] DecimalFormat 클래스 (0) | 2019.09.30 |
[JAVA] NumberFormat 클래스 (0) | 2019.09.30 |
[JAVA] Math 클래스 (0) | 2019.09.30 |
[JAVA] String 클래스에 대해서 (0) | 2019.09.30 |
[JAVA] 문자열 입력과 출력 (Scanner) (0) | 2019.09.30 |
[JAVA] 기본 데이터 타입과 변환 (0) | 2019.09.30 |
[JAVA] 이클립스(eclipse) 설치 및 셋팅 (0) | 2019.09.30 |