JAVA_Math 클래스

JW__1.7·2022년 7월 23일
0

JAVA 공부일지

목록 보기
7/30

Math 클래스

  • 패키지 : java.lang
  • 수학 처리용 클래스
  • 모든 메소드는 static 타입이므로 클래스이름 Math를 이용해서 호출해야 한다.

Math.random()을 이용한 난수 생성

  • static double random() 메소드
    • 0.0 이상 1.0 미만의 임의의 double 값을 반환
    • 연산을 통해 원하는 범위의 int형 난수를 구할 수 있다.

Random 클래스

  • 패키지 : java.util
  • 난수 생성 클래스
  • 기본적으로 현재 시간(timestamp)을 seed 값으로 사용하여 난수를 생성

난수(Random number)

  • 특정한 배열 순서나 규칙을 가지지 않는, 연속적인 임의의 수를 의미한다.
  • Math 클래스를 통해 주로 활용한다.
    System.out.println(Math.random());를 실행하면, 0.0 <= Math.random() < 1.0 사이의 값이 출력된다.

1. 확률 처리하기

10% 확률로 "대박", 90% 확률로 "쪽박"

	if(Math.random() < 0.1)	{
		System.out.println("대박");
	} else {
		System.out.println("쪽박");
	}

2. 난수 값 생성

Math.random()					0.0 <= n < 1.0
Math.random() * 5				0.0 <= n < 5.0
(int)(Math.random() * 5)    	  0 <= n < 5
(int)(Math.random() * 5)+ 1 	  1 <= n < 6

주사위 2개 던지기

	for(int n = 0; n < 2; n++) {
		int dice = (int)(Math.random() * 6) + 1;
		System.out.println("주사위" + dice);
	}
/*
주사위 1
주사위 5	→ 주사위 숫자는 랜덤으로 실행할 때마다 바뀐다.

6자리 숫자 인증번호 만들기

  • String code = "501924"
  • int로 하면 안되는 이유 ?
    숫자라면 모두 더해지고, 앞자리가 '0'이면 보여지지 않는다.
	String code1 = "";
	for(int n = 0; n < 6; n++) {
		code1 += (int)(Math.random() * 10);
	}
	System.out.println("인증번호 : " + code1);	 // 인증번호 : 191157 (계속 바뀐다.)

랜덤으로 대문자와 소문자 출력

	System.out.println((char)((int)(Math.random() * 26) + 'A'));	
    // A 대신에 숫자 65도 가능
		
	System.out.println((char)((int)(Math.random() * 26) + 97));		
    // 숫자 97 대신에 소문자 a도 가능

숫자 1과 'A'를 더하면 어떻게 될까?
→ 'A'를 숫자 65로 바꾼 뒤 1을 더해줘서 66으로 출력된다.

6자리 영문(대/소문자) 인증번호 만들기

	String code2 = "";
	for(int n = 0; n < 6; n++) {
		if(Math.random() < 0.5) {
			code2 += (char)((int)(Math.random() * 26) + 65);
		} else {
			code2 += (char)((int)(Math.random() * 26) + 97);
		}
	}
	System.out.println("영문 인증번호 : " + code2);	
    // 영문 인증번호 : WHahmR (계속 바뀐다.)

0개의 댓글