본문
Random()
프로그래밍/Java 2016. 1. 7. 13:36
반응형
# Random()
난수를 얻는 방법을 생각하면 Math.random()이 떠오를 것이다. 그리고 Random클래스를 사용하는 방법도 있는데, 몇가지 추가적인 기능을 제외하고는 Math.random()과 다르지 않다. 그래서 대부분의 경우 Math.random()만 사용해도 난수를 얻는데 별 어려움이 없기 때문에 가능하면 Random보다는 Math.random()을 사용할 것을 권한다.
int[] fillRand(int[] arr, int from, int to)
: 배열 arr를 from과 to범위의 값들로 채워서 반환한다.
int[] fillRand(int[] arr, int[] data)
: 배열 arr를 배열 data에 있는 값들로 채워서 반환한다.
String[] fillDistinctRand(String[] arr, String[] data)
: 배열 arr를 배열 data에 있는 값들로 중복없이 채워서 반환한다.
int getRand(int from, int to)
: from과 to범위의 정수(int)값을 반환한다. from과 to 모두 범위에 포함된다.
데이터베이스에 넣을 테스트 데이터를 만드는 예제이다.
Source01) RandomEx01.java
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 31 32 33 | package randomEx; public class RandomEx01 { final static int RECORD_NUM = 10; // 생성할 레코드의 수를 정한다. final static String TABLE_NAME = "TEST TABLE"; final static String[] CODE1 = { "010", "011", "017", "018", "019" }; final static String[] CODE2 = { "남자", "여자" }; final static String[] CODE3 = { "10대", "20대", "30대", "40대", "50대" }; public static void main(String[] args) { for (int i = 0; i < RECORD_NUM; i++) { System.out.println("INSERT INTO " + TABLE_NAME + " VALUE (" + " '" + getRandArr(CODE1) + "'" + ", '" + getRandArr(CODE2) + "'" + ", '" + getRandArr(CODE3) + "'" + ", '" + getRand(100,200) // 100~200 사이의 값을 얻는다. + "); "); } } private static String getRandArr(String[] arr) { return arr[getRand(arr.length - 1)]; // 배열에 저장된 값 중 하나를 반환한다. } private static int getRand(int n) { return getRand(0, n); } private static int getRand(int from, int to) { return (int) (Math.random() * (Math.abs(to - from) + 1)) + Math.min(from, to); } } | cs |
Result)
1 2 3 4 5 6 7 8 9 10 | INSERT INTO TEST TABLE VALUE ( '017', '여자', '30대', '148); INSERT INTO TEST TABLE VALUE ( '010', '남자', '40대', '117); INSERT INTO TEST TABLE VALUE ( '017', '여자', '30대', '124); INSERT INTO TEST TABLE VALUE ( '010', '여자', '40대', '146); INSERT INTO TEST TABLE VALUE ( '018', '남자', '30대', '126); INSERT INTO TEST TABLE VALUE ( '017', '남자', '30대', '172); INSERT INTO TEST TABLE VALUE ( '017', '여자', '20대', '170); INSERT INTO TEST TABLE VALUE ( '018', '여자', '40대', '130); INSERT INTO TEST TABLE VALUE ( '019', '여자', '10대', '111); INSERT INTO TEST TABLE VALUE ( '010', '남자', '10대', '176); | cs |
지금까지는 연속적인 범위 내에서 값을 얻어왔지만, 때로는 이 예제와 같이 불연속적인 범위에 있는 값을 임의로 얻어와야 하는 경우도 있다.
이런 경우 불연속적인 값을 배열에 저장한 후, 배열에 index를 임의로 얻어서 배열에 저장된 값을 읽어오도록 하면 된다.
- 출처 및 참고자료 : JAVA의정석(남궁성 저)
반응형
댓글