자바 난수 발생 랜덤(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 |
녹두장군1님의
글이 좋았다면 응원을 보내주세요!