안녕하세요. 제임스 입니다.
이번에는 자바 랜덤 함수에 대한 포스팅을 하고자 합니다.
아니... 사실은 발행 버튼만 누르면 포스팅이 끝났는데... 뜬금없이 블루 스크린이 발생하면서... 날려 먹었습니다.
그래서 다시 쓴 포스팅 입니다. ㅠㅠ
우선 시작전에 int 형 랜덤함수 조회 공식을 선 공개 하겠습니다.
int intValue = (int)( Math.random()*x ) + y;
여기서 x, y 는 물론 변수 입니다 :)
이 두친구가 무엇을 하는 친구 들인지는 아래에서 정리 하겠습니다.
■ Java Random Function (자바 랜덤 함수)
자바에서 제공하고 있는 랜덤함수를 사용하면 간단하게 랜덤 값을 반환 할 수 있습니다.
바로 Math 클라스의 random() 이라는 함수 이야기 인데요.
이친구가 바로 오늘의 주인공입니다.
Math.random() 의 값은 double 형으로 0.0 과 1.0 보다 작은 수 (1.0 은 해당사항 없습니다) 사이의 값을 반환하게 됩니다.
■ int 형의 랜덤 값 반환하기
일반적으로 랜덤하게 int 값을 뽑아 오는 작업을 많이 하는데요. 이때 이 double 로 반환된 값을 int 로 형변환 해주는 작업이 필요 합니다. 이를 위해 아래와 같이 코드를 작성해 봤습니다.
int intValue = (int)( Math.random() );
0.0 보다 크거나 같고 1.0 보다 작은 값을 (최대 0.9999... 인 값) int 로 형변환 합니다.
결과 값은 0 만 나오게 되어 있습니다.
처음 시작할때 x, y 값이 있었는데요. 여기서는 그 값이 빠져 있습니다.
이제 x, y 값에 대해 알아 보겠습니다.
■ int 형의 랜덤 값 범위내의 숫자 갯수
우선 x 값이 무엇인지 부터 알아 보겠습니다.
여기서 예제를 하나 더 보겠습니다.
원하는 숫자의 범위가 0 ~ 9 까지 입니다. 총 10개의 숫자가 필요 하죠. 그렇다면 이 코드를 어떻게 짜면 될까요?
int intValue = (int)( Math.random()*10 );
0.0 * 10 , 0.1 *10, .... , 0.99999999*10 을 한 결과는 0 ~ 9.999999.... 라는 double 형의 값이 반환됩니다.
이를 int 로 형변환 하게 되면 0, 1, 2, .... , 8, 9 까지 결과 값이 10개가 나올 수 있습니다.
즉, x 라는 값은 랜덤 숫자가 나올수 있는 범위내 존재 하는 숫자 갯수를 의미 한다고 볼수 있습니다.
이번에는 0 부터 15 까지 원하는 값을 랜덤하게 가져오기 위해서는 아래와 같이 작성하면 됩니다.
총 16개의 숫자가 필요 하므로 x 값을 16으로 셋팅 해주시면 됩니다.
int intValue = (int)( Math.random()*16 );
■ int 형의 랜덤 값의 시작값 정의
이번에는 y 값에 대해 알아 보겠습니다.
x 값에 대해 이야기 하면서 처음 예제가 0 ~ 9 까지였죠.
이번에는 1 ~ 10 까지 값을 가져오고 싶습니다. 물론 시작 값이 1 이죠?
그렇다면 y 값에 1을 넣어 주면 됩니다.
int intValue = (int)( Math.random()*10 ) + 1;
반환되는 값은 1 ~ 10 까지 10개의 값중 하나가 리턴 됩니다.
다른 예를 들어 보겠습니다.
만약 3 ~ 12 까지 10개의 값을 원한다면 아래와 같이 작성 하면 됩니다.
int intValue = (int)( Math.random()*10 ) + 3;
■ 응용하기
먼저 언급한 x, y 값을 잘 사용하면 조금 다른 범주의 랜덤값들도 가져 올 수 있습니다.
예를 들어 11, 12, 13 이 세개의 숫자만 랜덤하게 가져 오는 코드를 작성 한다면 어떻게 해야 할까요?
우선 숫자 갯수가 3개 입니다. x 값은 3이겠죠?
시작 숫자가 11 입니다. 그렇다면 y 값은 11입니다.
그럼 코드 작성 해보겠습니다.
int intValue = (int)( Math.random()*3 ) + 11;
■ 내용 정리
1. 자바 랜덤은 Math.random() 함수를 사용합니다.
2. int 형의 랜덤 값을 가져 오는 공식은 아래와 같습니다.
int intValue = (int)( Math.random()*x ) + y;
3. x 값은 랜덤 숫자가 나올 수 있는 범위내에 존재하는 숫자의 갯수를, y 값은 시작 값을 의미 합니다.
위 세가지만 알면 자바에서 랜덤값은 쉬운 녀석입니다 :)
▼ 도움이 되셨다면 로그인이 필요 없는 ▼
▼ 하트 클릭 한번 부탁 드립니다 ▼
감사합니다 :D
'Java' 카테고리의 다른 글
[ 자바 코딩 ] Java replace() vs replaceAll() (7) | 2017.11.20 |
---|---|
[ 자바 코딩 ] Java compareTo(), compareToIgnoreCase() 함수 (6) | 2017.11.15 |
[ 자바 코딩 ] 자바 charAt(), indexOf(), lastIndexOf(), length() (6) | 2017.11.14 |
[자바 코딩] 배열 정렬 Arrays.sort() (7) | 2017.09.28 |
[Java] java.lang.NullPointerException 오류 (465) | 2017.08.26 |