본문 바로가기
공부/java

자바(java)의 난수(랜덤수) 출력

by 샤샤샤샤 2023. 1. 23.

임의의 수(난수, 랜덤수) 출력하기

 

랜덤수를 출력하는데는 2가지 방법이 존재한다.

 

1. 외부 라이브러리에서 Random클래스를 사용하기

import java.util.Random;

public class ex34 {
    public static void main(String[] args) {
        Random rand = new Random();            //객체생성
        int randomInt = rand.nextInt( 10 );    //0~9사이의 정수
        System.out.println( randomInt );

(사용할 클래스 명) (매개변수 이름) = new (사용할 클래스명)()

이어서 매개변수 이름.nextInt( n ) 과 같은 식으로 사용한다.

이때 괄호안에 생성되는 정수는 0~(n-1) 중에 무작위로 생성된다.

0이 필요 없다면 +1을 해주는 것을 잊지 말자.

n본인이 포함 안된다는 것 역시 잊지 말자.

 

2. 내장된 Math 클래스 이용

무작위로 0.XXX... ~ 9.9999... 사이의 실수를 생성하는 Math.random() 함수를 사용하자.

        double randomDouble = Math.random();
        System.out.println( randomDouble );
        int randomInt2 = (int)(randomDouble * 10);       // 강제형변환 규칙을 이용해 임의의
        System.out.println( randomInt2 );                // 정수를 구해낸다.

0이 필요 없다면 +1을 해주자.

만약 0~9까지가 아닌 0~6이나 0~7까지의 숫자를 구하고 싶다면 어떡해야 할까?

*10 대신에 *7이나 *8을 해주면 된다.

만약 랜덤으로 생성된 숫자가 나올수 있는 최댓값인 0.9999... 이더라도 * 7을 하면 7미만의 숫자가 나오기 때문이다.

 

import java.util.Random;

public class ex34 {
    public static void main(String[] args) {
        //임의의 수(난수) 발생시키는 방법
        //랜덤수
        //방법1 - Random 클래스 사용
        Random rand = new Random();  //객체생성
        int randomInt = rand.nextInt( 10 ); //0~9사이의 정수
        System.out.println( randomInt );

        //방법2 - Math 클래스 사용
        // random()함수는 0.0 ~ 0.999... 사이의 실수
        double randomDouble = Math.random();
        System.out.println( randomDouble );
        int randomInt2 = (int)(randomDouble * 10);//0~9사이의 정수
        System.out.println( randomInt2 );

        //연습문제 16
        //1. Random클래스를 이용하여, 로또번호 6개를 발생시켜 보자.
        //   로또번호 1~45까지의 숫자 6개임.
        Random rand2 = new Random();
        System.out.println( rand2.nextInt(45) + 1 );
        System.out.println( rand2.nextInt(45) + 1 );
        System.out.println( rand2.nextInt(45) + 1 );
        System.out.println( rand2.nextInt(45) + 1 );
        System.out.println( rand2.nextInt(45) + 1 );
        System.out.println( rand2.nextInt(45) + 1 );

        //2. Math.random()함수를 이용하여, 주사위 값 하나를 발생시키자.
        //   주사위 1~6까지의 값임.
        System.out.println( (int)(Math.random() * 6) + 1 );

        //3. 철수와 영희가 주사위 놀이를 하고 있다.
        // 주사위 2개를 던져서,
        // 두개 다 짝수가 나오면 철수 승!
        // 두개 다 홀수가 나오면, 영희 승!
        // 그외의 경우는 무승부! 이다.
        // 게임의 결과를 출력하시오.
        int dice1 = rand2.nextInt( 6 ) + 1;
        int dice2 = rand2.nextInt( 6 ) + 1;
        System.out.println( dice1 );
        System.out.println( dice2 );
        if( dice1%2==0 && dice2%2==0 ) {
            System.out.println("철수 승!");
        } else if( dice1%2==1 && dice2%2==1 ) {
            System.out.println("영희 승!");
        }else{
            System.out.println( "무승부!" );
        }

    }
}

0부터 시작한다는 것을 언제나 유념해두자.

'공부 > java' 카테고리의 다른 글

자바(java)의 배열  (0) 2023.01.23
자바(java)의 반복문: for, while  (1) 2023.01.23
자바(java)의 조건문(1)  (1) 2023.01.23
자바(java)의 연산(1)  (0) 2023.01.23
자바(java)의 버퍼 메모리  (0) 2023.01.23