임의의 수(난수, 랜덤수) 출력하기
랜덤수를 출력하는데는 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 |