자바에서 랜덤한 숫자를 생성하는데는 두 가지 방법이 가능하다.
하나는 java.util.Random 클래스를 사용하는 것이고, 다른 하나는 Math.random() 메소드를 사용하는 것이다.
Random 클래스는 편리하게 random numbers 를 생성할 수 있으나, Object 를 생성해야 하는데 이것이 불편할 경우도 있을 수 있다. 이와는 대조적으로 Math.random() 메소드는 단순히 double 형태의 난수만 생성할 수 있다.
java.util.Random class
Random 클래스를 사용하기 위해서는 다음과 같은 import 구문 중 하나를 사용해야 한다.
<Random 생성자>
<Random 메소드>
아래는 랜덤 숫자를 얻기 위한 가장 일반적인 메소드들이다.
<Example: 임의의 Color 생성하기>
0 ~ 255 사이의 RGB 값을 이용한 Color 만들기
RGB 값이 모두 nexInt(256) 같은 메소드를 호출하여 생성되지만, 각각은 독립적인 임의의 값이 된다.
<Example: 1 부터 6 까지의 숫자 만들기 >
nextInt(6) 메소드론 0 ~ 5 까지의 숫자만을 얻을 수 있기 때문에 1 ~ 6 까지의 숫자를 얻기 위해서는 1 을 더해야 한다.
Math.random() method
Math.random() 메소드는 0.0 보다 같거나 크고, 1.0 보다 작은 double 형태의 수를 return 한다.
이는 Random Class 의 nextDouble() 메소드와 같은 결과 값이다.
아래 예문을 보자.
보통 0.0...0.999999 범위의 값은 잘 사용하게 되지를 않는다. int 값을 얻을려면 casting 이 필요하다.
아래 1 ~ 10 값을 구하는 예문을 보자.
10 을 곱함으로써 0.0 ~ 9.9999+ 사이의 값을 얻을 수 있고 int 로 casting 함으로써 0 에서 9 까지의 값을 얻을 수 있다(소수점 이하의 수는 반올림이 아니고 버림이다).
마지막으로 1 을 더함으로써 1 에서 10까지의 난수를 얻게 된다.
하나는 java.util.Random 클래스를 사용하는 것이고, 다른 하나는 Math.random() 메소드를 사용하는 것이다.
Random 클래스는 편리하게 random numbers 를 생성할 수 있으나, Object 를 생성해야 하는데 이것이 불편할 경우도 있을 수 있다. 이와는 대조적으로 Math.random() 메소드는 단순히 double 형태의 난수만 생성할 수 있다.
java.util.Random class
import java.util.Random; // Random class만 사용하는 경우 import java.util.*; // java.util package 모두 사용
<Random 생성자>
Random r = new Random(); // Default seed comes from system time. Random r = new Random(long seed); // For reproducible testing
<Random 메소드>
아래는 랜덤 숫자를 얻기 위한 가장 일반적인 메소드들이다.
int i = r.nextInt(int n) //Returns random int >= 0 and < n int i = r.nextInt() //Returns random int (full range) long l = r.nextLong() //Returns random long (full range) float f = r.nextFloat() //Returns random float >= 0.0 and < 1.0 double d = r.nextDouble() //Returns random double >=0.0 and < 1.0 boolean b = r.nextBoolean() //Returns random double (true or false)
<Example: 임의의 Color 생성하기>
0 ~ 255 사이의 RGB 값을 이용한 Color 만들기
Random r = new Random(); Color c = new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256));
RGB 값이 모두 nexInt(256) 같은 메소드를 호출하여 생성되지만, 각각은 독립적인 임의의 값이 된다.
<Example: 1 부터 6 까지의 숫자 만들기 >
nextInt(6) 메소드론 0 ~ 5 까지의 숫자만을 얻을 수 있기 때문에 1 ~ 6 까지의 숫자를 얻기 위해서는 1 을 더해야 한다.
Random r = new Random(); int ranNum = r.nextInt(6) + 1;
Math.random() method
이는 Random Class 의 nextDouble() 메소드와 같은 결과 값이다.
아래 예문을 보자.
double x; x = Math.random();
보통 0.0...0.999999 범위의 값은 잘 사용하게 되지를 않는다. int 값을 얻을려면 casting 이 필요하다.
아래 1 ~ 10 값을 구하는 예문을 보자.
int n = (int)(10.0 * Math.random()) + 1;
10 을 곱함으로써 0.0 ~ 9.9999+ 사이의 값을 얻을 수 있고 int 로 casting 함으로써 0 에서 9 까지의 값을 얻을 수 있다(소수점 이하의 수는 반올림이 아니고 버림이다).
마지막으로 1 을 더함으로써 1 에서 10까지의 난수를 얻게 된다.
'programming > java' 카테고리의 다른 글
log4j 설정 예(sample) (0) | 2011.06.22 |
---|---|
자바 디렉토리 삭제하기(Delete a non-empty directory in JAVA) (1) | 2011.06.09 |
Java SE의 정규 표현식(정규식, Regular Expressions) (0) | 2009.09.15 |
필수 자바 라이브러리 (0) | 2009.04.07 |
[JAVA] hex to byte[], byte[] to hex (0) | 2008.10.07 |