ksouth9

java.util.Random 클래스 본문

Java

java.util.Random 클래스

ksouth9 2022. 4. 5. 00:13

java.util.Random 클래스


난수를 얻는 클래로 객체를 생성해서 사용한다.

double randNum = Math.random();
double randNum = new Random().nextDouble();	// 위의 문장과 동일

1~6사이의 정수를 난수로 얻고자 하는 예시

int num = (int)(Math.random() * 6) + 1;
int num = new Random().nextInt(6) +1;	// nextInt(6)은 0~6사이의 정수를 반환

Math.random()과 Random의 가장 큰 차이점이라면, 종자값(seed)을 설정할 수 있따는 것이다. 종자값이 같은 Random인스턴스들은 항상 같은 난수를 같은 순서대로 반환한다. 

종자값은 씨앗이라고 생각하면 쉽다. 같은 종자값(씨앗)을 입력하면 계속해서 같은 난수를 순서대로 반환한다.

import java.util.Arrays;
import java.util.Comparator;
import java.util.Objects;
import java.util.Random;

import static java.util.Objects.*;

public class ObjectsTest {

	public static void main(String[] args) {
		Random rand = new Random(1);
		Random rand2 = new Random(1);
		
		System.out.println("= rand =");
		for(int i=0;i<5;i++)
			System.out.println(i + " : "+rand.nextInt());
		
		System.out.println();
		System.out.println("= rand2 =");
		for(int i=0;i<5;i++)
			System.out.println(i + " : "+rand2.nextInt());
		
	}

}//실행결과
= rand =
0 : -1155869325
1 : 431529176
2 : 1761283695
3 : 1749940626
4 : 892128508

= rand2 =
0 : -1155869325
1 : 431529176
2 : 1761283695
3 : 1749940626
4 : 892128508

Random 인스턴스 rand와 rand2가 같은 종자값(seed)을 사용하기 때문에 같은 값들을 같은 순서로 얻는다. 같은 종자값을 갖는 Random 인스턴스는 시스템이나 실행시간 등에 관계없이 항상 같은 값을 같은 순서로 반환할 것을 보장한다.

'Java' 카테고리의 다른 글

java.util.Scanner 클래스  (0) 2022.04.05
정규식(Ragular Expression) - java.util.regex 패키지  (0) 2022.04.05
java.util.Objects 클래스  (0) 2022.04.04
래퍼(wrapper)클래스  (0) 2022.03.30
Math클래스  (0) 2022.03.30