Java 랜덤 문자열 생성 / Random 클래스 / 랜덤 숫자 / 난수

2016. 12. 2. 16:24language/java


Java 랜덤 문자열 생성 / Random 클래스 / 랜덤 숫자 / 난수

 

 

 

랜덤 문자열을 생성할 경우가 있다.

 

예를 들면 임시 비밀번호를 생성하거나 특정 난수가 필요한 경우가 있다.

 

이럴 경우 간단하게 Random 함수를 사용하면 가능하다.

 



 

영문자는 int 타입의 숫자를 char 타입으로 캐스팅 하면 아스키코드 문자로 변환된다.

 

영소문자 a-z 출력하기 (아스키코드 97~122)

1
2
Random rnd = new Random();
String randomStr = String.valueOf((char) ((int) (rnd.nextInt(26)) + 97));
cs

 

영대문자 A-Z 출력하기 (아스키코드 65~122)

1
2
Random rnd = new Random();
String randomStr = String.valueOf((char) ((int) (rnd.nextInt(26)) + 65));
cs

 

숫자 0-9 출력하기

1
2
Random rnd = new Random();
String randomStr = String.valueOf(rnd.nextInt(10));
cs

 



 

위 방법들을 이용하여 랜덤한 문자열을 생성해보자.

 

생성할 문자열은 숫자와 영문 대소문자를 섞은 20자 문자열이다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
StringBuffer temp = new StringBuffer();
Random rnd = new Random();
for (int i = 0; i < 20; i++) {
    int rIndex = rnd.nextInt(3);
    switch (rIndex) {
    case 0:
        // a-z
        temp.append((char) ((int) (rnd.nextInt(26)) + 97));
        break;
    case 1:
        // A-Z
        temp.append((char) ((int) (rnd.nextInt(26)) + 65));
        break;
    case 2:
        // 0-9
        temp.append((rnd.nextInt(10)));
        break;
    }
}
cs

1# : 랜덤한 문자열을 담을 StringBuffer

2# : Random 클래스 생성

3# : 20번 돌수있는 루프

4# : 숫자, 영문소문자, 영문대문자를 구분할 랜덤 숫자 (0,1,2) 생성

5# : 숫자, 영문소문자, 영문대문자를 구분할 switch 문

 

 

 

ps. 특수문자를 사용하고 싶다면 영문자를 생성하듯이 아스키코드를 사용하면 된다.