티스토리 뷰
[Java] Random 랜덤 숫자 및 자료형 생성 하기
java.util.random 클래스를 이용한 랜덤 자료형 생성 vs java.lang.Math와 비교
Random 클래스
1. 호출Random 객체 생성하기
Random random = new Random();
위와 같이 Random 객체를 생성한다.
Math와 달리 한번 생성한 객체를 재활용하여 지속적으로 사용할 수 있다.
2-1. 정수 Random (int)생성
int 의 범위 -2,147,483,648 ~2,147,483,647 내에서 무작위 수 발생
// int 의 범위 -2,147,483,648 ~2,147,483,647 내에서 무작위 수 발생
int randomInt01 = random.nextInt();
System.out.println("randomInt01 \t: " + randomInt01);
2-2. 정수 Random (int)생성 - 범위지정
원하는 Bound(범위)내에서 랜덤 int 생성
// 0 ~ 99 사이의 Random int 값 생성
int randomInt02 = random.nextInt(100);
System.out.println("randomInt02 \t: " + randomInt02);
※ 0 ~ bound 의 범위 내에서 생성 (bound 값은 0 보다 큰 양의 값이 되어야 한다.)
※ Bound 값이 0을 포함한 음수의 값을 가지게 되면 아래와 같은 에러가 난다.
-> java.lang.IllegalArgumentException: bound must be positive
※ 음수의 범위 내에 값을 생성하기 위해서는 양수 범위로 생성한 후 처리를 해주면 된다.
-> ex) -0 ~ -99 의 값을 원할 경우 위에서 간단하게 결과 값에 -1을 곱해서 처리하는 식으로 하면된다.
3. 각 자료형의 min~max 값에 대한 Random 값생성
long, float, double, boolean 값을 생성 할 수 있다.
// 데이터 형의 최소 ~ 최대 값으로 Random 데이터 생성
long randomLong = random.nextLong();
float randomFloat = random.nextFloat();
double randomDouble = random.nextDouble();
System.out.println("randomLong \t\t: " + randomLong);
System.out.println("randomFloat \t: " + randomFloat);
System.out.println("randomDouble \t: " + randomDouble);
4. byte Array에 임의(랜덤)의 byte값을 채우기
// 임의의 바이트 Array에 랜덤으로 byte 채우기
byte[] randomBytes = new byte[16];
random.nextBytes(randomBytes);
for (byte b : randomBytes) {
System.out.print(b + " ");
}
5. 결과 출력
randomInt01 : -1068375961
randomInt02 : 69
randomLong : 1103435009130542788
randomFloat : 0.26886266
randomDouble : 0.11659966505403929
randomBoolean : false
randomBytes
63 18 29 24 -128 -120 -78 -89 125 -110 13 -30 124 -63 108 -24
Math 클래스와 비교
1. Math 클래스를 이용한 랜덤 값 생성 방법
int mathRandomInt = (int) Math.random() * 100;
위와 같이 생성하면 0~99의 int 값을 생성 할 수 있다.
2. Math vs Random
Math 내부의 random역시 Random 클래스를 이용하여 생성해준다.
public static double random() {
return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
}
private static final class RandomNumberGeneratorHolder {
static final Random randomNumberGenerator = new Random();
}
Math의 Random 함수 부분인데
Math클래스에서 Random 객체를 생성하기 때문에 여러번 반복 하거나 많은 횟수의 Random 작업이 이루어 질 경우 Math보다는 Random 객체를 생성하여 사용하는 것이 효율적이다.
또한, Random 클래스를 이용하여 다양한 범위의 랜덤범위와 추가 작업을 하는데 있어서도 유리하다.
'Dev > Java' 카테고리의 다른 글
[Java] Java를 이용해 AWS S3 파일 업로드 하기- AWS S3 Upload for java (0) | 2016.12.15 |
---|---|
[Java] AWS S3 Security Credentials 생성 하기 (0) | 2016.12.14 |
[Java] Maven Servlet WEB-INF/lib 적용되지 않을 때 (0) | 2016.12.09 |
[Java] JDBC JAVA Mysql 연동하기 (2) | 2016.12.08 |
[Java] static 변수 이해하기 (0) | 2016.02.03 |
- Total
- Today
- Yesterday
- 하카타
- 인스턴트
- 에러
- 예제
- Android Stuido
- 라면
- Android
- 일식
- Picasso
- MongoDB
- 라멘
- 맛집
- jar
- library
- 설치
- Android Studio
- java
- 안드로이드
- 컵라면
- GS25
- 편의점
- 일본
- 직화
- 돈돈
- Custom
- 리뷰
- Python
- 안드로이드 스튜디오
- 후쿠오카
- 생성
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |