Math 사용하기
※Math.random() 메소드를 통한 랜덤한 정수 뽑기
(1) Math.random()은 double 타입의 수로 실수값 0.0이상 1.0미만의 난수이다.
0.0<= Math.random() <1.0
이때 양변에 n을 곱해준다.
0.0<= Math.random()*n < n*1.0
곱해준 수의 정수부분은 0, 1, 2, ... , (n-1) 이다.
0.0<= (int)(Math.random()*n) < n*1.0
그때 이 수를 int 형태로 강제 타입변환을 하면 정수부분인 0, 1, 2, ... , (n-1) 를 제외한 소숫점이 절삭된다.
1<= (int)(Math.random()*n)+1 < n+1
이 수에 1을 더해주면 결과값은 1, 2, 3, ... , n 중 하나의 수가 출력이 된다.
(int)(Math.random()*n)+1;
Ex) 주사위 n=6
Ex2) 로또 n=45
(2) 이러한 원리를 이용하면 뒤에 더해준 숫자가 최솟값을 뜻하게되며, n은 그 숫자부터 포함되는 숫자의 개수를 뜻한다.
(int)(Math.random()*(숫자의 개수))+(최소값)
의 꼴을 갖추면 된다.
Ex) 15번에서 30번까지의 수 중 한개를 뽑기
15번부터 30번까지 숫자의 개수는 16개이다.
(int)(Math.random()*16)+15
※ 그외의 다른 메소드
double v3 = Math.PI; //3.14..... 원주율을 출력시킨다 타입은 double
Math.ceil(v3); // 소숫점 첫째자리에서 올림을 하여 준다. 타입은 여전히 double
Math.floor(v3); // 소숫점 첫째자리에서 버림을 하여 준다. 타입은 여전히 double
Math.round(v3); // 소숫점 첫째자리를 기준으로 반올림을 한다. 타입은 long
여러가지 수학적인 메소드들이 존재하여 필요한것은 차후에 찾아서 사용하기로한다.
※타입별로 난수를 만들기
주의사항 : Import를 하고 시작하자.
import java.util.Random; // Random을 사용하기전에 무조건 표기
Random num = new Random(); // Random은 util 패키지에 속하기때문에 import 하고 시작하자!
random.nextLong(); //long타입으로 난수생성
random.nextFloat(); //float타입으로 난수생성
random.nextDouble(); //double타입으로 난수생성
random.nextBoolean(); //boolean타입으로 난수생성
random.nextInt(10); // parameter에 10을 입력할 경우 0이상 10이하의 int 값을 반환
※Random()의 parameter
Random random1 = new Random(1); //Random에 seed 1을 입력한 random1
Random random2 = new Random(1); //Random에 seed 1을 입력한 random2
Random random3 = new Random(2); //Random에 seed 2를 입력한 random3
System.out.println(random1);
System.out.println(random2);//random1과 random2는 서로 같은 알고리즘이므로 같은 값을 가지게 된다.
System.out.println(random3);//random3는 seed가 다르기때문에 다른 값이 나올 것이다.
seed는 난수의 씨앗으로 씨앗이 같다면 다른곳에 심더라도 같은 난수가 발생하게 된다.
※static 이란?
static double a; // 클래스를 가리지않고 사용가능
double b;// 해당 클래스가 아니라면 적용되지 않음
앞에 static을 붙여줌으로써 정적인 필드에서 사용됨을 알린다.
※switch 조건문
int n = (int)Math.random(3); // n에 3미만의 정수, 즉 0, 1, 2를 난수로 지정
char k=''; // k에 문자 선언후 초기화
switch( n ) //n은 변수
{
case 0: k='a'; break; // n==0일때 k='a';를 실행
case 1: k='b'; break; // n==1일때 k='b';를 실행
default: k='e'; break; // n!=0 & n!=0일때 즉 case를 아무것도 해당하지 않을때 k='e';를 실행
}
조건문으로 쓰이는 변수는 int 타입뿐만이 아니라 String, char 도 사용 가능하다.
break는 원래 반복문에서 사용되는 것이지만 예외적으로 switch 문에서도 사용된다.
int time = 8;
switch(time){
case 8: System.out.println("눈을 뜹니다"); //break가 존재하지 않아 다음줄의 코드 실행
case 9: System.out.println("학원에 갑니다"); // break가 존재하지 않아 다음줄의 코드 실행
case 10: System.out.println("수업을 듣습니다"); // break가 존재하지 않아 다음줄의 코드 실행
}
break가 없는 switch 구문의 실행은 다음줄의 코드로 이어진다.
★ 다음시간 수업 예습 :
배열 및 참조변수 및 배열속의 배열 > 다중for문을 다시한번 연습해야 받아들이기 편하다.
배열 > 얕은복사 + 깊은복사 : 면접때 자주 쓰이는 주제
'JAVA > JAVA 국비지원 수업 정리' 카테고리의 다른 글
JAVA 10일차 수업 (0) | 2023.05.11 |
---|---|
JAVA 9일차 수업 (2) | 2023.05.10 |
JAVA 8일차 추가공부 log (0) | 2023.05.09 |
JAVA 8일차 수업 log (0) | 2023.05.09 |
JAVA 7일차 수업 log (2) | 2023.05.08 |