[Java] random

이연수·2025년 6월 12일

Java

목록 보기
7/8

1. random문이란?

프로그래밍에서 무작위 값을 생성할 때 사용하는 기능

게임, 추첨, 데이터 샘플링, 테스트 등에서 자주 사용.
자바에서는 보통 두 방식으로 랜덤값을 만듦.

1. Math.random() : 간단하지만 실수(double)만 변환
2. java.util.Random 클래스 : 다양한 지원 타입 지원

예시 1 : Math.random()

 // 0.0 이상 1.0 미만의 실수
double randDouble = Math.random();
	System.out.println("실수 랜덤값: " + randDouble);

// 1부터 10 사이의 정수
int randInt = (int)(Math.random() * 10) + 1;
	System.out.println("정수 랜덤값 (1~10): " + randInt);
예시 2 : Random 클래스 사용
import java.util.Random;

public class Main {
    public static void main(String[] args) {
        Random rand = new Random();

        // 0.0 이상 1.0 미만의 실수
        double randDouble = rand.nextDouble();
        System.out.println("실수 랜덤값: " + randDouble);

        // 1부터 10 사이의 정수
        int randInt = rand.nextInt(10) + 1;
        System.out.println("정수 랜덤값 (1~10): " + randInt);
    }
}

2. 기본 예제

대표 예제1 : 1~45 사이의 랜덤 로또 번호 하나 뽑기

import java.util.Random;

public class LottoExample {
    public static void main(String[] args) {
        Random rand = new Random();
        int lottoNumber = rand.nextInt(45) + 1; // 1~45
        System.out.println("로또 번호: " + lottoNumber);
    }
}
코드 설명 :
< Random rand = new Random(); >
- Random은 Java에서 무작위 값을 만들어주는 클래스
- 객체를 한번 생성해두면 rand.nextInt() 등 다양한 랜덤값 뽑을 수 있음
- 이 방식이 Math.random()보다 더 유연하고 객체 지향적 -> 실무 사용률 Up

대표 예제2 : 메뉴 랜덤 추천

import java.util.Random;

public class MenuExample {
    public static void main(String[] args) {
        String[] menus = {"김치찌개", "제육볶음", "된장국", "비빔밥", "불고기"};
        Random rand = new Random();
        String todayMenu = menus[rand.nextInt(menus.length)];
        System.out.println("오늘의 추천 메뉴: " + todayMenu);
    }
}
코드 설명 :
< String[] menus = {...}; >
- String 배열을 사용해서 여러 개의 메뉴 후보들을 준비
- 배열 인덱스는 0부터 시작하기 때문에 김치찌개는 menus[0], 된장찌개는 menus[1]
- 이 방식이 Math.random()보다 더 유연하고 객체 지향적 -> 실무 사용률 Up

< menus[rand.nextInt(menus.length) >
- rand.nextInt(menus.length)는 0부터 menus.length - 1 사이의 정수를 랜덤으로 뽑음.

3. 자주 하는 실수 Top 2

1. 범위 설정 실수 — +1 안 해서 원하는 범위 안 나옴

int num = (int)(Math.random() * 10); // 0~9 (❌ 1 포함 X)
오류 설명 :
(int)(Math.random() * 10) → 결과는 0~9
대부분은 1~10이 나오길 원하는데, +1 안 하면 0도 나와버림

해결법 :

int num = (int)(Math.random() * 10) + 1; // ✅ 1~10

2. 배열 인덱스 초과 — nextInt(길이) 제대로 안 씀

String[] arr = {"a", "b", "c"};
Random rand = new Random();
String s = arr[rand.nextInt(3 + 1)]; // ❌ IndexOutOfBounds
오류 설명 :
arr.length == 3일 때 인덱스는 0~2까지만 가능
nextInt(4) 쓰면 3 나올 수 있어서 터짐

해결법 :

String s = arr[rand.nextInt(arr.length)]; // ✅ 안전하게 0~2

1개의 댓글

comment-user-thumbnail
2025년 6월 16일

아따리!!!!!! 기본 예제와 자주 하는 실수까지...... 유얼이스빛.....

답글 달기