. 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()이 이용되어 만들어진 결과값은

실행할 때마다 달라진다.