공부했던 자료 정리하는 용도입니다.
재배포, 수정하지 마세요.
Math.random( )을 활용한 로또번호 뽑기
Math.random() 함수를 이용해서 랜덤으로 로또번호를 뽑는 프로그램이다. random() 함수는 double 형으로 0 <= random() < 1 의 범위의 난수를 반환한다. 원하는 결과를 얻기 위해서 값에 45 를 곱하고 1 을 더했다.
Math.random( ) : 0 <= random < 1 범위의 double 형 난수를 반환
원하는 정수형 난수 값 범위 계산(1 ~ 45인 경우) |
실행할 때마다 번호가 바뀌는 것을 확인할 수 있다.
번호를 저장할 배열( number[ ] )을 선언한다. 7 개의 번호를 저장해야 하므로 크기는 7 로 설정했다. for 문을 이용해서 차례로 랜덤 값을 생성해 저장한다. 배열 값들을 비교하기 위해서 for 문을 한번 더 써서 이중 for 문을 만든 뒤에 while 문으로 다른 값이 나올 때까지 반복해서 랜덤 값을 생성한다. 만약 보너스 번호를 따로 출력하고 싶으면 출력을 위한 for 문에 조건식을 넣어서 출력 값을 다르게 바꿔주면 된다.
package test;
class test{
public static void main(String[] args) {
int[] number = new int[7]; //7개의 숫자를 저장할 배열 생성
for(int i = 0 ; i < number.length ; i++) { //배열의 길이(7)만큼 반복문 실행
number[i] = (int)(Math.random() * 45) + 1; //1 ~ 45 범위의 랜덤값을 생성해서 차례로 저장
for(int j = 0 ; j <= i - 1 ; j++) { // 현재 배열의 값(i번째)와 그 전 배열들의 값(i-1까지)을 비교하기 위한 반복문
while(number[i] == number[j]) { // 두 개의 배열값이 같을경우(다를 때까지 반복)
number[j] = (int)(Math.random() * 45) + 1; //값을 새로 생성한다(중복을 없애기 위한 과정)
}
}
}
for(int i = 0 ; i < number.length ; i++) { //최종 배열값을 출력하기 위한 반복문
System.out.print(number[i] + " "); //배열의 값 출력
}
}
}
+ HashSet 을 이용하면 중복없이 자료를 저장할 수 있다. set.size( ) 를 지정한 크기만큼 될때까지 반복하면 HashSet 은 중복을 허용하지 않기때문에 자동적으로 중복이 아닌 값들이 저장된다. 정렬을 사용하기 위해서 LinkedList 에 담은 뒤 sort 로 정렬하고 출력했다.
package Example;
import java.util.*;
public class Example {
public static void main(String[] args) {
Set set = new HashSet(); //HashSet 선언
for(int i = 0 ; set.size() < 7 ; i++) {
set.add((int)(Math.random() * 45) + 1); //1 ~ 45 범위의 랜덤값을 생성해서 차례로 저장
} //hashSet은 중복을 허용하지 않기 때문에 set.size가 지정한 개수만큼 찰 때까지 반복하면 중복값을 제외한 값들이 저장된다.
List list = new LinkedList(set); //정렬하기 위해서 LinkedList로 저장
Collections.sort(list); //정렬
System.out.println(list);
}
}
'Back end > Java 문제' 카테고리의 다른 글
[Java] 문자열이 숫자인지 판별 (isDigit()) (0) | 2019.06.14 |
---|---|
[Java] 구구단 (0) | 2019.06.13 |
[Java] 문자열/숫자의 자리합 더하기 (2) | 2019.06.09 |
[Java] 1부터 n까지의 정수 중에서 2 or 3의 배수가 아닌 수의 총합 구하기 (0) | 2019.05.29 |
[Java] 대문자를 소문자로, 소문자를 대문자로 변환 ( toUpperCase( ), toLowerCase( )) (0) | 2019.05.24 |