1. Math.random() 메소드
- random() 메소드는 반환형이 double형이다. 실수를 반환하기 때문에 형변환을 해줘야 해서 앞에 (int)형을 써줘야 한다.
int Dice; Dice = (int) (Math.random() * 6 + 1);
- 1 ~ 6 중 랜덤한 숫자가 나온다.
2. Random 클래스 활용
- nextBoolenan(), nextDouble(), nextFloat(), nextInt() 등등 기본적인 자료형 종류를 지정해서 사용할 수 있다. 가장 많이 쓰이는 정수형 nextInt() 같은 경우에는 아래와 같이 범위를 지정해서 사용이 가능하다.
1) Random 클래스의 객체를 생성한다.
2) 객체명.nextInt(정수) : 0 ~ 정수-1 사이의 무작위 수를 1개 발생시킨다.
3) 객체명.nextInt(정수) + 1 : 1 ~ 정수 사이의 무작위 수를 1개 발생시킨다.
int Dice = random.nextInt(6) + 1
- 1 ~ 6 중 랜덤한 숫자가 나온다.
3. 컴퓨터가 생성하는 난수는 정말 랜덤 숫자일까?
- 유사난수(pseudorandom number) : 난수를 흉내내기 위해 알고리즘으로 생성되는 값
- 이때, 유사난수를 생성하는 알고리즘을 유사난수 생성기(pseudoradom number generator, PRNG)로 부른다.
- 유사난수는 알고리즘의 상태에 의해 값이 정해지므로 생성된 수열은 일정한 주기를 가지며, 따라서 난수의 예측 불가능성을 가질 수 없다.
- 예측 불가능성이 필요한 경우 하드웨어와 같이 외부 신호를 이용하는 하드웨어 난수 생성기를 사용한다.- 유사(의사) 난수 생성 방법
의사 난수를 생성하기 위해서는 변하는 입력(조건)과 함수 두 가지가 필요하다.
함수는 입력값을 이용한 계산을 통해 난수를 생성하는 역할을 하며, 입력값은 매번 다른 난수를 생성하기 위하여 매번 달라져야 한다.
이 값을 다르게 하는 방법은 현재 시간을 얻어서 이용하는 방법 또는 이전 결과 값(난수 값)을 다시 입력으로 넣는 방법 등 다양한 방법이 있다.