본문 바로가기
Programming/JAVA

[Java] 난수(Random number) 생성하기

by 이브(Eve) 2025. 1. 12.

자바에서 난수를 생성하는 방법에 대해 알아보자!


Contents

1. Random 클래스란?

1-1. 시드(Seed)란?

2. Random 클래스를 이용해 난수를 생성하는 예제


1. Random 클래스란?

자바에서는 Random 클래스를 이용하여 정수 실수, 논리 값 등 다양한 난수를 생성할 수 있다.

Random 클래스는 java.util 패키지에 포함되어 있기 때문에 패키지를 import 해주어야 한다.

import java.util.Random;

 

패키지를 불러왔다면 이제 random 객체를 만들어야 한다. 객체는 다음과 같이 만들 수 있다.

Random [이름] = new Random(seed)
import java.util.Random;

public class HelloWorld
{
    public static void main(String[] args)
    {
        Random r1 = new Random();
        Random r2 = new Random(5);

    }
}

 

Random 안의 시드(Seed)는 생략해도 되고, 적어도 된다.

만약 시드를 적지 않을 경우 현재 시스템 시간을 시드로 설정하여 난수를 생성한다.

1-1. 시드(Seed)란?

컴퓨터는 완전한 랜덤 값을 생성할 수 없기 때문에 시드를 이용하여 의사 난수(Pseudorandom Number)를 생성한다.

시드란 난수 생성의 기준값으로, 같은 시드를 사용하면 항상 같은 순서로 같은 랜덤 값이 나온다.

 

위의 예제 코드에서는 시드로 5를 설정했다. 이렇게 하면 다음과 같은 코드를 실행했을 때 항상 같은 결과값이 나온다.

System.out.println(r2.nextInt());
-1157408321

 

Random 객체를 만들었다면 이제 랜덤 값을 만들 차례이다. 어떤 랜덤 값을 생성하는지에 따라 사용되는 메서드가 다르다.

생성하려는 데이터의 타입 메서드 설명
int nextInt() int 범위의 정수 난수 생성
nextInt(값) 0 이상 값 미만의 정수 생성
실수 nextFloat() 0.0 이상 1.0 미만의 실수 생성
nextDouble()
long  nextLong() long 범위의 정수 난수 생성
boolean nextBoolean() true 또는 false 값 생성

 

2. Random 클래스를 이용해 난수를 생성하는 예제

1) 랜덤 정수 값 만들기

import java.util.Random;

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

        int x = random.nextInt();
        System.out.println(x);
    }
}
693778295

 

 

2) 랜덤 실수 값 만들기 ( + 특정 범위의 랜덤 실수 값 만들기 )

import java.util.Random;

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

        // 0.0 이상 1.0 미만의 실수 만들기
        double r1 = random.nextDouble();
        System.out.println(r1);

        // 특정 범위의 실수 만들기 (1.0 이상 5.0 미만)
        double r2 = 1.0 + random.nextDouble() * 4.0;
        System.out.println(r2);
    }
}
0.6192027666425998
2.968933934317717