프로젝트를 하다 보면,
랜덤하게 무언가를 출력해주어야 할 때가 있습니다.
프로젝트에서 바로 사용 하려면 갑자기 생각이 않나기도 하는데요.
오늘은 Java의 랜덤 함수를 이용해 난수를 얻는 방법에 대해서 정리해 보도록 하겠습니다.
1. 자바의 Random함수
Java에서는 Random한 결과값을 얻기 위해 두가지 클래스에서 함수들을 사용할 수 있는데요.
Random클래스의 멤버함수와 Math클래스의 멤버함수 입니다.
먼저 Random 클래스를 보도록 하겠습니다.
2. Random클래스
아무래도 Math클래스보다는 Random에 전문적인 class 이름이기는 한데요.
java.util패키지의 Random클래스를 import해 주어야 사용할 수 있습니다.
Random클래스의 객체를 생성한 다음,
멤버 함수들을 이용하면 되는데요.
만약 0~10중 랜덤한 int값을 가지고 싶다고 할 경우를 생각해 보겠습니다.
nextInt라는 멤버 함수를 이용하면 되는데요.
인자로 Boundary값 즉, 넘어서면 않되는 값을 넣어주면 됩니다.
0~10중 값을 얻고 싶을 때는 11에는 닿으면 않되므로, 11을 인자로 넣어주면 됩니다.
Random클래스의 멤버함수에는,
위의 경우와 같이 nextInt(boundary)함수를 사용할 경우가 많이 있지만,
이외에도 여러가지 유용한 멤버함수들이 있습니다.
그중에서도 많이 쓰일 만한 것들을 보면 아래와 같습니다.
2-1. nextBoolean()
true 혹은 false중 하나의 값을 랜덤하게 돌려주므로,
간단한 동전 뒤집기와 같은 경우 쉽게 결과를 얻을 수 있겠지요.
(물론 대부분 동전 뒤집기여도, 나오는 결과의 비중을 다르게 하겠지만요)
2-2. nextFloat()
float값을 random하게 원한다면 이 함수가 좋은데요.
0.0 and 1.0사이의 값을 랜덤하게 생성해 줍니다.
2-3. nextInt()
int범위안의 모든 값중에 랜덤한 값을 반환해 줍니다.
이 외에도 많지만, 우선은 이 정도로도 충분히 많은 작업이 가능할 것 같습니다.
이제 Math함수를 사용하는 방법도 알아보겠습니다.
3. Math클래스
Math클래스 중에서도 random메소드를 사용할 텐데요.
위의 Random클래스의 메소드의 사용과는 다른 점은,
여기서 사용하는 random메소드는 static메소드라는 점 입니다.
Java의 공식문서의 설명을 잠깐 보도록 하겠습니다.
static함수이며, 0.0~1.0의 double값을 랜덤하게 반환해 준다고 하는 군요.
참고로 1.0미만의 값(less than)이 나오는 것이므로 이점은 주의를 해 주어야 합니다.
만약 1~10까지 랜덤한 값을 가지고 싶게 한다고 하면,
아래와 같이 10을 곱해준 int로 형변환한 값에 1을 더해주면 되겠습니다.
Math.random()메소드는 단순히 int값 랜덤을 구하기 보다는,
특정한 값들의 범위 안의 random값을 구할 때 더 편한것 같은데요.
예를 들어 아래와 같이 10~100 사이의 값을 구하고자 할 경우,
100-10을 뺀 값인 90을 곱해주면 random메소드가 0에서 90미만의 값을 내어 줄 텐데요.
이 값에 1을 더해 주어서 0~90 사이의 값이 나오도록 random함수를 사용합니다.
아래와 같이 그 결과값에 10을 더해 주면 10~100 사이의 값을 받을 수 있겠네요.
4. 정리
Java의 Random 함수들에 대해서 정리해 보았는데요.
이 밖에도 유용한 함수나 방법이 있다면 이 글을 통해서 정리하도록 하겠습니다.
'Android 개발 > Java, Java8' 카테고리의 다른 글
Java 8의 메서드 참조(Method Reference) 문법 이해하기 (0) | 2024.11.02 |
---|---|
Java, Android 에서 날짜 표현할 때 Calendar, Date 그리고 SimpleDateFormat (1) | 2018.12.11 |
Enum값에 대해서 알아보겠습니다 (0) | 2018.04.10 |
정규 표현식 (Regular Expression) 과 응용 사례를 정리해 보자 (1) | 2017.09.07 |
Math 클래스 의 반올림, 올림, 버림 등 자주 사용하는 메소드 정리 #Java (0) | 2017.04.09 |
Matcher 클래스와 Pattern Class로 정규 표현식을 활용해보자 (0) | 2017.03.22 |
Java 배열 및 ArrayList 를 Comparable과 Comparator 를 이용해 정렬하기 (0) | 2017.03.19 |
Bit 논리 연산과 시프트 연산 의 정리 (0) | 2017.03.16 |
Java Wrapper 클래스 를 정리해 보자 (0) | 2017.03.07 |
Java Map인 HashMap, TreeMap, LinkedHashMap 에 대해서 정리해 보자. (0) | 2017.02.12 |
댓글