1. 랜덤한 수를 뽑아내는 두 가지 방법
1-1) Math.random
=== 랜덤한 정수를 뽑아낸다 === //
double random = Math.random();
System.out.println("random => " + random);
// random => 0.0872948627250868
// random => 0.8606970691775878
// random => 0.21534823746789
// random => 0.5672984827210117
* java.lang.Math.random() 메소드는 0.0 이상 1.0 미만의 실수(double) 값을 랜덤하게 나타내어주는 메소드입니다. 그러나, 우리는 평소에 랜덤한 숫자를 뽑을 때, 1부터 10까지 중 랜덤한 정수를 얻어와야하는 경우가 여럿 있습니다. 1부터 10까지 중 랜덤한 정수를 얻어오기 위한 방법은 다음과 같습니다.
//랜덤한 정수 = (int)(Math.random( ) * 구간범위) + 시작값 ;
int rnd1 = (int)(Math.random( ) * ( 10 -1 + 1 ) ) + 1 ; // 1번 코드
int rnd2 = (int) (Math.random( ) * ('Z' - 'A' + 1) ) + 'A' ; // 2번 코드
위의 1번 코드는 1부터 10 까지 중 랜덤한 정수를 가져오는 코드이고, 2번 코드는 알파벳 대문자 'Z' 부터 대문자 'A' 까지의 랜덤한 값을 가져오는 것입니다. 여기서 자바의 중요한 특징인 char 타입이 사칙연산을 만나면 int 로 바뀌는 것을 이용한 것이다. 그러나, 위의 방법들이 보안상으로 위험하다는 평가가 있어서 요즘에는 다른 방법을 통해서 랜덤한 수를 추출하는데, 다른 방법은 바로 밑에서 보여드리도록 하겠습니다.
1-2) util.Random
import java.util.Random ;
Random rnd = new Random( ) ;
// == 처음수 부터 마지막 수 사이에 랜덤한 정수 만들기 공식 ==
// 랜덤한 정수 = rnd.nextInt ( 마지막수 - 처음수 +1) +처음수 ;
// 1부터 10까지 중 랜덤한 정수를 얻어와 본다.
int rnd1 = rnd.nextInt( 10 - 1 + 1) +1 ; // 1번 코드
int rnd2 = rnd.nextInt ( 'Z' - 'A' + 1 ) + 'A' // 2번 코드
최근에는 다음과 같은 방법으로 랜덤한 수를 추출한다고 한다. 1번 코드는 1부터 10까지 중에서의 랜덤한 수를 뽑아내는 것이고, 2번 코드는 알파벳 대문자 ' A' 부터 'Z' 까지 중 하나의 알파벳을 추출하는 것이다.
이러한 랜덤 뽑기 기술을 통해, 가위바위보 , 홀짝 , 로또 를 자바를 통해서 모의로 만들어 볼 수 가 있었다. 다음 사진은 홀짝 게임을 자바를 통해 만들어 본 것이다.
''국비지원'의 시작' 카테고리의 다른 글
자바 비긴즈 10 ( 1차원 배열 , 2차원 배열 (Array) ) (0) | 2023.01.15 |
---|---|
자바 비긴즈 09 기본생성자 , 생성자 오버로딩 (0) | 2023.01.13 |
자바 비긴즈 07 ( while문, do while문 ) (0) | 2023.01.10 |
자바 비긴즈 06( FOR문, IF문 , SWITCH문 ) (0) | 2023.01.09 |
자바 비긴즈 05 (스캐너, wrapper 클래스 , math클래스) (0) | 2023.01.08 |