Math

Mia Lee·2022년 1월 17일
0

JAVA

목록 보기
95/98
package ex_math;

public class Ex1 {

	public static void main(String[] args) {

		/*
		 * java.lang.Math 클래스
		 * 
		 */
		
		// Math 클래스의 상수
		System.out.println("PI 값 : " + Math.PI);
		
		// Math 클래스의 static 메서드
		int num = 10;
		
		System.out.println("num의 절대값 : " + Math.abs(num));
		System.out.println("num 과 20 중 큰 값 : " + Math.max(num, 20));
		System.out.println("4 의 제곱근 : " + Math.sqrt(4));
		
		double dNum = 3.141592;
		System.out.println("실수 dNum의 소수점 첫째자리 반올림값 : " + Math.round(dNum));
		
		// 항상 소수점 첫째자리에서 반올림이 일어나므로 X번째 자리 반올림을 위해서는
		// 반올림할 숫자의 반올림 자리 수를 첫번째 자리에 위치하도록 변형해야한다!
		// 실수 3.141592의 소수점 4번째 자리 숫자를 반올림하기 위해서
		// 해당 숫자를 소수점 첫번째 자리로 이동시키기 위한 값을 직접 곱하거나
		// 해당 숫자에 10^(x-1) 값을 곱해야함(x 는 반올림할 자리수의 값)
		// ex) 3.141592 * 1000 또는 3.141592 * (10^(4-1))
		// => 또한, 원래 자리로 숫자를 되돌리기 위해 다시 곱한 만큼 나눗셈 수행
		// ex) 3.141592 * 1000 / 1000
		// => 주의! Math.round() 수행 시 리턴값이 long이므로
		//    정수 1000을 다시 나눌 경우 소수점이 사라지게 된다(long / int => long)
		//    따라서, 두 피연산자 중 한 쪽을 실수형으로 변환 후 연산을 수행!
		//    ex) Math.round(dNum * 1000) / 1000.0
		System.out.println("실수 dNum의 소수점 넷째자리 반올림값 : " + (Math.round(dNum * 1000) / 1000.0));
		System.out.println("실수 dNum의 소수점 둘째자리 반올림값 : " + (Math.round(dNum * 10) / 10.0));
		
		/*
		 * Math.random()
		 * - 난수(임의의 수) 발생을 위한 메서드
		 * - Math.random() : 0.0 <= x < 1.0 범위의 double 타입 난수 발생
		 * 
		 * < 난수 발생 기본 공식 >
		 * 1. (정수화) (Math.random() * 상한값) 		: 0 ~ 상한값 - 1 (0 <= x < 상한값)
		 * 2. (정수화) (Math.random() * 상한값) + 1 	: 1 ~ 상한값 (1 <= x <= 상한값)
		 * 3. 복합 공식
		 *    (정수화) (Math.random() * (상한값 - 하한값 + 1) + 하한값) : 하한값 ~ 상한값 
		 *    (하한값 <= x <= 상한값)
		 * 
		 */
		
		System.out.println("========================================");
		
		for (int i = 1; i <= 10; i++) {
			
//			System.out.println(Math.random()); // 0.0 <= x < 1.0
			
			// 정수  1자리 범위의 난수 발생시키기 위해서는
			// Math.random() 결과를 원하는 자릿수만큼 정수로 이동시키고
			// 남은 자리 숫자들은 제거
//			System.out.println((int) (Math.random() * 10)); // 0 <= x < 10
			
			// 0을 제외하고 1부터 상한값까지의 난수 발생을 위해서는
			// 난수 발생 결과에 +1을 수행
			System.out.println((int) (Math.random() * 10) + 1); // 1 <= x < 11(1 ~ 10)
			
		}
		
		System.out.println("=======================================================");
		
		// 복합 공식 적용 시
		int upperNum = 8; // 상한값
		int lowerNum = 3; // 하한값
		
		for (int i = 1; i <= 10; i++) {
			System.out.println((int) (Math.random() * (upperNum - lowerNum + 1) + lowerNum));
			
		}
		
	}

}
















}package ex_math;

public class Test1 {

	public static void main(String[] args) {

		/*
		 * Math.random() 메서드를 활용한 로또 번호 생성 프로그램
		 * - 1 ~ 45 까지의 6개의 난수를 발생
		 * - 발생된 난수(로또 번호)를 배열에 저장
		 *   단, 배열에 저장되는 6개의 난수는 중복이 제거된 난수!
		 *   => 배열에 난수 저장 전 배열 내에 저장된 숫자와 중복되는 검사 후
		 *      중복되지 않을 경우에만 배열에 난수를 저장
		 *      
		 * < 출력결과 예시 >
		 * 나의 로또번호 : 2 12 16 25 39 40
		 * 1등 당첨번호 : 3 12 16 26 30 40
		 * 일치하는 번호 갯수 : 3 개
		 * 
		 */
		// 로또 번호 6개를 저장할 int형 배열 myLotto 생성
		int[] myLotto = new int[6];
		
		// 1등 당첨번호
		int[] thisWeekLotto = {3, 12, 16, 26, 30, 40};
		
		// 1. 생성된 난수를 배열 내의 모든 숫자와 비교하여 일치하는 숫자가 없을 경우에 난수를 저장하는 방법
		
		// 2. 일단 난수를 저장한 후 일치하는 숫자가 없을 경우 제어변수 i값을 1만큼 빼는 방법
		
		// => 안쪽 for문을 사용하여 배열 내의 모든 숫자와 발생시킨 난수를 비교
		
		
	}

}

0개의 댓글