자바에서 난수를 만드는 방법은 2가지가 있습니다.
- Random 클래스 사용.
- Math.random() 사용.
두 방법의 차이점은 Math.random() 메소드는 0.0에서 1사이의 double 난수를 얻는데만 사용한다면, Random 클래스는 boolean, int, long, float, double 난수를 얻을 수 있습니다. 또 Math.random()은 종자값(seed)이 고정인 반면 Random클래스는 종자값을 설정 할 수 있습니다. 종자값은 난수를 만드는 알고리즘에 사용되는 값으로 종자값이 같으면 같은 난수를 얻습니다.
대표적으로 가장 많이 사용되는 랜덤함수는 import java.util.random; 클래스 이다. java.util은 별도로 설치할 필요 없이 java를 설치하면 모두 사용할 수 있기 때문에 import만 하면 사용이 가능하다.
컴퓨터는 기본적으로 난수를 생성할 수 없다. 사람이란 존재는 현재 수많은 상황에 놓여져 있고, 매번 유사한 상황이 된다 하더라도 다른 선택을 할 수 있다 그러나 컴퓨터는 인간과 같은 상황에 놓이기 힘들고, 동일한 값이 들어오면 동일한 값을 출력하게 된다
그렇기 때문에 난수값을 생성하기 위해서는 몇가지 상황이라는 종자값(Seed)를 생성하여 그 시드에 맞는 난수를 결정하게 된다. 즉 컴퓨터가 만들어내는 난수는 Seed에 따라 동일하게 나오는 해쉬(Hash)값과 유사하다는 것이다. 이 난제를 해결하기 위해 랜덤을 제공하는 기능들은 Seed값을 입력하지 않으면 보통 컴퓨터의 현재 시간을 seed값으로 선택하고 난수값을 생성하여 사람들은 컴퓨터가 매우 영특하게 난수값을 생성한다고 착각하게 된다.
'Java' 카테고리의 다른 글
Java 06. if문, else if, else (제어문, 조건문, 반복문) (0) | 2023.03.05 |
---|---|
Java 05. Enum (이넘 열거형 자료 타입) (0) | 2023.03.04 |
Java 03. Scanner 스캐너 (0) | 2023.03.03 |
Java 02. 연산자 (연산자의 종류, 연산자의 연산 방법) (0) | 2023.03.02 |
Java 01. 변수와 자료형, 자료형의 종류와 크기 ( 데이터 타입 Data type ) (0) | 2023.03.01 |