20230202 [Java] 난수(랜덤 숫자) 생성하기

Daisy🌷·2023년 2월 2일
0

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)로 부른다.
    - 유사난수는 알고리즘의 상태에 의해 값이 정해지므로 생성된 수열은 일정한 주기를 가지며, 따라서 난수의 예측 불가능성을 가질 수 없다.
    - 예측 불가능성이 필요한 경우 하드웨어와 같이 외부 신호를 이용하는 하드웨어 난수 생성기를 사용한다.
  • 유사(의사) 난수 생성 방법
    의사 난수를 생성하기 위해서는 변하는 입력(조건)과 함수 두 가지가 필요하다.
    함수는 입력값을 이용한 계산을 통해 난수를 생성하는 역할을 하며, 입력값은 매번 다른 난수를 생성하기 위하여 매번 달라져야 한다.
    이 값을 다르게 하는 방법은 현재 시간을 얻어서 이용하는 방법 또는 이전 결과 값(난수 값)을 다시 입력으로 넣는 방법 등 다양한 방법이 있다.
profile
티스토리로 블로그를 이전했습니다. 😂 구경 오세요! 👉🏻 https://u-ryu-logs.tistory.com

0개의 댓글