자바 난수 발생 랜덤(Random) 클래스로 데이터를 추출하는 다양한 방법 |
Java 에서는 난수를 발생시켜서 처리해야 될 일이 종종 있습니다. 추출되는 숫자의 분포가 정확하지 않고 정밀한 난수를 필요로 할때는 다른 방법을 쓰는데, 그런 경우는 안당해 봐서 잘 모르겠네요. 여기서 소개할 방법은 2가지 인데 Random 클래스를 사용하는 방법과 Math 클래스의 random() 함수를 사용하는 것입니다. 두가지 방법을 사용해 응용문제는 지정해준 범위내에서 랜덤으로 난수를 발생시키는 방법입니다.
1. Java.util.Random 클래스를 이용한 무작위 데이터 추출 |
▼ 아래 예제는 Random 클래스를 사용해서 int, float, bool 형 데이터를 출력한 예제입니다.
이외에도 Random 함수에는 아래 그림과 같이 여러가지가 있으므로 참고 하기 바란다.
import java.util.Random; public class RandomTest { /** * @param args */ public static void main(String[] args) { Random random = new Random(); // 1~10까지의 정수를 랜덤하게 출력 // nextInt 에 10 을 입력하면 0~9 까지의 데이타가 추출되므로 +1 을 한것이다. int data = 0; for (int i = 0; i < 10; i++) { data = random.nextInt(10) + 1; if (i != 0) System.out.print(","); System.out.print(data); } System.out.println(""); // 0.0f 에서 1.0f 까지의 실수를 랜덤하게 출력 float f = random.nextFloat(); System.out.println(f); // true(참), false(거짓) 중의 하나를 랜덤하게 출력 Boolean b = random.nextBoolean(); System.out.println(b); } }
▼ 위의 소스를 실행한 결과값입니다. 그리고 랜덤 개수를 늘이고 싶으면 nextInt()
함수의 파라미터를 값을 늘이면 됩니다.
2. Math.random() 함수를 사용해서 무작위 숫자 추출하기
▼ Math.random() 은 0.0 이상 1.0 미만인 double 형 실수를 반환합니다. 여기서 정수를
반환하게 하고 싶으면 1~10 의 랜덤 숫자를 뽑고 싶으면 10 을 곱하고 int 로 캐스팅을
하면 됩니다. 그리고 그 이상의 숫자는 당연히 10 대신 해당 수를 곱합니다.
public class MathRandom { /** * @param args */ public static void main(String[] args) { // 0.0 ~ 1.0 사이의 실수 난수 구하기 for (int i = 0; i < 10; i++){ if (i != 0) System.out.print(","); System.out.print(Math.random()); } System.out.println(""); // 1 ~ 10 까지의 정수 난수 구하기 // 실수에서 10 을 곱하고 int 로 캐스팅 하게 되면 정수가 된다. for (int i = 0; i < 10; i++) { int n = (int) (Math.random() * 10) + 1; if (i != 0) System.out.print(","); System.out.print(n); } } }
▼ 위의 소스를 실행한 결과값입니다.
3. 지정된 범위내에서 랜덤으로 숫자를 발생시키기 |
▼ 방법은 Math.random() 을 사용하는 것인데, 첫 시작값이 최소값이므로 + 해주고
최대값은 최대 – 최대 의 차이값을 곱해줍니다. 그리고 int 로 캐스팅을 해주면 됩니다.
public class ExternRandom { /** * @param args */ public static void main(String[] args) { // min 에서 max까지 범위의 정수를 랜덤하게 20개 출력 int min = 10; int max = 20; for (int i = 0; i < 20; i++) { int result = (int) (Math.random() * (max - min + 1)) + min; if (i != 0) System.out.print(","); System.out.print(result); } } }
▼ 위 소스를 실행한 결과값입니다.
'자바(JAVA)' 카테고리의 다른 글
Java 에서 날짜 더하기 (0) | 2014.02.08 |
---|---|
자바 Junit 기능중 타임 아웃 테스트 하기 (0) | 2013.10.27 |
Java 단위테스트 Junit 에서 Suite 로 클래스 집합 테스트 하기 (0) | 2013.10.26 |
Java 파일입출력의 다양한 방법들을 배워본다 (1) | 2012.09.28 |
이클립스(Eclipse) SWT 샘플 프로젝트 실행 (0) | 2012.09.20 |
이클립스(Eclipse) 로 SWT 설치후 프로젝트 개발 준비하기 (0) | 2012.09.20 |
Spring 환경에서 JSON 사용시 한글 Encoding 에러 처리 (0) | 2012.09.04 |
Java 를 알기위한 기본 용어 정리와 관계도 (1) | 2012.03.18 |