. Java의 정석
[Java] 배열의 활용 : 임의의 값으로 배열 채우기(Math.random())
박인영
2021. 7. 14. 00:24
<임의의 값으로 배열 채우기>
연속 또는 불연속적인 값들로 배열을 초기화한다.
다음과 같이 Math 클래스의 random()을 이용하여
배열을 연속적인 범위의 임의의 값으로 채우는 것이 가능하다.
Math.random() // 0.0 ~ 1.0
(int)(Math.random() * 10) // 0 ~ 10
(int)(Math.random() * 10 + 1) // 1 ~ 11
Math 클래스의 random()은
0.0에서 1.0 사이의 소수 중의 하나를
double 타입으로 반환한다.
(예 : 0.23040494703437164)
Math.random()에 숫자나 혹은
숫자를 반환하는 수식이나 변수 등을 연산한 후
필요한 타입으로 형변환하면
원하는 범위 내에서 임의의 값을 반환하게 할 수 있다.
이를 이용해 아래와 같이
배열을 임의의 값으로 초기화(할당)할 수 있다.
int[] num = new int[5];
for (int i = 0; i < num.length; i++) {
int tmp = (int)(Math.random() * num.length);
num[i] = tmp;
}
System.out.println(Arrays.toString(num)); // [3, 4, 2, 0, 4]
int tmp = (int)(Math.random() * num.length);로 인해
tmp에 0, 1, 2, 3, 4 중 하나가 저장되었다.
int[] code = { -4, -1, 3, 6, 11 };
int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
int tmp = (int)(Math.random() * code.length);
arr[i] = code[tmp];
}
System.out.println(Arrays.toString(arr)); // [-1, 11, -4, -4, 11, 6, -4, 3, 3, 6]
위와 같이 임의의 수를 인덱스 값으로 반환하여
code 배열의 요소에 저장된 값을 무작위로 가져와
for문을 이용해 arr 배열의 요소들을 채울 수도 있다.
Math.random()이 이용되어 만들어진 결과값은
실행할 때마다 달라진다.