반응형

로또 번호나 중복 없는 핀번호 등을 만들기 위해 랜덤 문자 혹은 랜덤 숫자를 받습니다.

Java 언어를 사용하여 랜덤 문자 혹은 랜덤 숫자를 입력받는 방법에 대해 알아보겠습니다.

 


 

1. Random 클래스를 이용하여 랜덤 영문 대문자 받기

        Random rnd = new Random();
        StringBuffer sb = new StringBuffer(len);

        String return_str = "";

        for( int i = 0; i < 2; i++) {
            sb.append((char) ((rnd.nextInt(26)) + 65));
        }
        
        return_str = sb.toString();

 

- rnd.nextInt(숫자) : 0 ~ (숫자-1)의 랜덤 숫자 반환

- 아스키코드(대문자 : 65 ~ 90)를 이용하여 StringBuffer에 담습니다.

- 이때 for문의 i 값을 2로 설정했기 때문에 대문자 2개가 담기게 됩니다.

 

예시 결과 값 : ND

예시 결과 값 : AM

예시 결과 값 : VP

.

.

.

 

 

2. Random 클래스를 이용하여 랜덤 숫자 받기

        Random rnd = new Random();
        StringBuffer sb = new StringBuffer(len);

        String return_str = "";

        for( int i = 0; i < 5; i++) {
            sb.append((rnd.nextInt(10)));
        }

        return_str = sb.toString();

 

- rnd.nextInt(숫자) : 0 ~ (숫자-1)의 랜덤 숫자 반환

- 따라서 위 예시 코드는 0 ~ 9의 숫자를 랜덤으로 받고 있습니다.

- for문이 5번 돌고 있으므로 총 5개의 숫자가 반환됩니다.

 

예시 결과 값 : 63234

예시 결과 값 : 21099

예시 결과 값 : 16523

.

.

.

 

 

3. 재귀 함수를 사용하여 중복 없는 핀코드 받기

private String randomString(int len) {

        Random rnd = new Random();
        StringBuffer sb = new StringBuffer(len);

        String return_str = "";

        for( int i = 0; i < 2; i++) {
            sb.append((char) ((rnd.nextInt(26)) + 65));
        }

        for( int i = 0; i < 5; i++) {
            sb.append((rnd.nextInt(10)));
        }

        return_str = sb.toString();

        // 중복체크하는 코드
        Registration check_pin = Registration.findFirst("pin_id = ? and deleted = 0", return_str);
        
        // 중복코드일 경우, 함수 재호출 (재귀함수)
        if(check_pin != null) {
            return_str = randomString(7);
        }

        return return_str;
        
}

 

- 참가자에게 중복없이 핀코드를 주기 위하여 재귀 함수 사용

- 재귀함수란? 자신을 정의할 때 자기 자신을 재 참조하는 방법

- 위의 코드에서 randomString(7)을 하여 자기 자신을 재호출하고 있습니다.

 

- Registration 은 activeJDBC를 이용하여 registrations 테이블에서 sql을 실행시킨 것입니다.

- 위 코드에서 재귀함수를 빠져나올 수 있는 코드를 추가한다면 더 완벽한 코드가 됩니다.

 

예시 결과 값 : AZ76334

예시 결과 값 : WB09236

예시 결과 값 : LU31091

.

.

.

 

 

이상으로 Java 언어로 랜덤 문자 혹은 랜덤 숫자를 입력받는 방법에 대해 알아보았습니다.

 


 

* activeJDBC 알아보기

ActiveJDBC 다운로드 및 사용법 바로가기 링크

 

[ActiveJDBC] ActiveJDBC 다운로드 및 사용법

Java로 코딩을 하다보면 데이터베이스를 더 쉽고 간단하게 가져오는 방법을 찾곤 합니다. 그래서 저는 ActiveJDBC를 활용하여 간편하게 데이터베이스를 연동했습니다. 이번 포스팅에서는 ActiveJDBC를

nm-it-diary.tistory.com

 


 

반응형