Java에서는 java.util.Random 클래스를 활용하면 지정한 범위 내에서 손쉽게 난수를 생성할 수 있습니다. 이번 글에서는 생성한 난수들을 ArrayList에 저장하고 출력하는 전체 과정을 예제 코드와 함께 살펴보겠습니다.
핵심 개념: Random 클래스와 nextInt()
Random 클래스가 제공하는 nextInt(bound) 메서드는 0(포함)부터 bound(미포함) 사이의 정수 난수를 반환합니다. 예를 들어 nextInt(1000)을 호출하면 0부터 999 사이의 값이 무작위로 생성됩니다. 따라서 원하는 상한값을 인자로 넘겨주기만 하면 원하는 범위의 난수를 얻을 수 있습니다.
예제 코드
import java.util.Random;
import java.util.*;
public class Demo{
public static void main(String args[]){
Random my_rand = new Random();
List my_list_1 = new ArrayList();
int v_1 = my_rand.nextInt(1000);
int v_2 = my_rand.nextInt(967);
int v_3 = my_rand.nextInt(1050);
int v_4 = my_rand.nextInt(10000);
int v_5 = my_rand.nextInt(100);
my_list_1.add(v_1);
my_list_1.add(v_2);
my_list_1.add(v_3);
my_list_1.add(v_4);
my_list_1.add(v_5);
System.out.println("The random values in the list are : ");
for(int i=0; i<my_list_1.size(); i++)
System.out.print(my_list_1.get(i)+" ");
}
}
실행 결과
The random values in the list are : 677 230 763 1695 48
코드 동작 원리
먼저 Demo라는 이름의 클래스 안에 프로그램의 진입점인 main 함수를 정의합니다. 그다음 순서대로 다음 작업이 수행됩니다.
1. Random 객체(my_rand)를 생성하여 난수 생성기를 준비합니다.
2. 난수를 담아둘 ArrayList(my_list_1)을 생성합니다.
3. 서로 다른 상한값(1000, 967, 1050, 10000, 100)을 지정해 다섯 개의 정수 난수를 만들고 각각 변수에 할당합니다.
4. add() 메서드를 사용해 생성된 난수들을 리스트에 차례로 추가합니다.
5. for 반복문으로 리스트의 크기만큼 순회하며 모든 요소를 콘솔에 출력합니다.
참고: 더 나은 코드 작성 팁
실무에서는 제네릭(Generic)을 사용해 타입 안정성을 높이는 것이 좋습니다. 위 코드의 리스트 선언을 List<Integer> my_list_1 = new ArrayList<>();처럼 작성하면 컴파일 시점에 타입 오류를 미리 잡을 수 있고, 불필요한 형 변환도 줄어듭니다. 또한 Java 8 이상에서는 스트림(Stream) API를 활용해 난수 생성과 저장을 한 줄로 처리할 수도 있습니다.