JAVA/JAVA 국비지원 수업 정리

JAVA 6일차 수업 log
깝몬 2023. 5. 4. 16:44

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