- 패키지 :
java.lang
- 수학 처리용 클래스
- 모든 메소드는 static 타입이므로 클래스이름
Math
를 이용해서 호출해야 한다.
static double random()
메소드double
값을 반환int
형 난수를 구할 수 있다.
- 패키지 :
java.util
- 난수 생성 클래스
- 기본적으로 현재 시간(timestamp)을 seed 값으로 사용하여 난수를 생성
- 특정한 배열 순서나 규칙을 가지지 않는, 연속적인 임의의 수를 의미한다.
- Math 클래스를 통해 주로 활용한다.
System.out.println(Math.random());
를 실행하면, 0.0 <= Math.random() < 1.0 사이의 값이 출력된다.
10% 확률로 "대박", 90% 확률로 "쪽박"
if(Math.random() < 0.1) {
System.out.println("대박");
} else {
System.out.println("쪽박");
}
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
for(int n = 0; n < 2; n++) {
int dice = (int)(Math.random() * 6) + 1;
System.out.println("주사위" + dice);
}
/*
주사위 1
주사위 5 → 주사위 숫자는 랜덤으로 실행할 때마다 바뀐다.
- 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으로 출력된다.
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 (계속 바뀐다.)