자바에서는 Random 클래스와 Math 클래스를 사용하여 편리하게 random value 를 생성할 수 있습니다.

자바 랜덤함수(Java Random)

 

 

그러나 랜덤 문자열(random string) 을 만들기 위해서는 추가적으로 간단한 구현이 필요합니다.

지금부터는 random string 을 만들기 위한 방법에 대해 설명하도록 하겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.Random;
 
public class RandomString {
    private static final char[] chars;
    static {
        StringBuilder buffer = new StringBuilder();
        for (char ch = '0'; ch <= '9'; ++ch)
            buffer.append(ch);
        for (char ch = 'a'; ch <= 'z'; ++ch)
            buffer.append(ch);
        for (char ch = 'A'; ch <= 'Z'; ++ch)
            buffer.append(ch);
        chars = buffer.toString().toCharArray();
    }
 
    public static String random(int length) {
        if (length < 1)
            throw new IllegalArgumentException("length < 1: " + length);
 
        StringBuilder randomString = new StringBuilder();
        Random random = new Random();
        
        for (int i = 0; i < length; i++) {
            randomString.append(chars[random.nextInt(chars.length)]);
        }
        return randomString.toString();
    }
 
    public static void main(String[] args) {
        System.out.println(random(10));
    }
}
cs

 

위의 random() 메소드는 글자의 길이(length) 를 파라미터로 입력 받아

원하는 크기의 random string 생성하고 있습니다.

 

chars 배열을 통해 원하는 문자(숫자, 소문자, 소문자)들을 기초로 하여

Random 클래스의 nextInt() 메소드에서 발생시키는 위치의 배열 값을 차곡차곡 쌓아

지정된 길이 만큼의 string 을 생성해서 반환합니다.

 

이외에도 "~!@#$%^&*()_+{}|\\\"`;:'<>?,./=-[]" 와 같은 특수 기호들을 포함할 수도 있습니다.

 

<출력>

3ifL5KImXd

 

 

추가적으로 stackoverflow 를 통해서 더 다양한 방법을 확인 할 수 있습니다.

 

 

Posted by maze1008
,

자바 랜덤함수를 사용하는 방법은 2가지가 있습니다.

 

Random 클래스와 Math 클래스를 각각 사용해서 random value 를 생성하는 방법에 대해 설명 드리겠습니다.

 

 

1. Java.util.Random

 

Random 클래스의 객체를 생성하면 다음과 같이 다양한 메소드를 사용하여 원하는 타입의 random value 를 생성할 수 있습니다.

 

그 중에서도 가장 많이 사용되는 nextInt() 메소드는 파라미터를 사용해서

원하는 범위내의 양수 값을 (범위 : 0 ~ 파라미터-1) 가져올 수 있습니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.Random;
 
public class RandomTest {
    public static void main(String[] args) {
        Random random = new Random();
        
        System.out.println(random.nextBoolean());   // true or false
        System.out.println(random.nextFloat());     // range : 0.0f ~ 1.0f(exclusive)
        System.out.println(random.nextInt());       // all 2^32 possible int values 
        System.out.println(random.nextInt(100));    // range : 0 ~ 99
    }
}
 
cs

 

 

<결과>

false
0.2699461
2087110484
73

 

 

 

2. Java.util.Math

 

Math 클래스는 수학적 연산과 관련된 메소드들을 제공하는 클래스로

random() 메소드를 사용하여 0.0 <= double value < 1.0  의 값을 생성할 수 있습니다.

 

random() 메소드가 double 타입을 리턴하기 때문에 타입 캐스팅(int)를 사용해서 정수형으로 변환하여 사용할 수 있으며, (int)(Math.random() * 최대값) + 최소값 의 연산을 통해 최소값 ~ 최대값의 범위 지정도 가능합니다. (실제적으로는 (int)(Math.random() * (최대값 - 최소값 + 1)) + 최소값  입니다.)

 

예제에서는 1 ~ 100 사이의 random value 를 출력하게 됩니다.

 

1
2
3
4
5
6
7
8
public class RandomTest {
    public static void main(String[] args) {
        // range : 0.0 ~ 1.0(exclusive)
        double randomValue = Math.random();    
        int intValue = (int)(randomValue * 100) + 1;
        System.out.println(intValue);
    }
}
cs

 

<결과>

75 

 

 

Posted by maze1008
,

이클립스를 설치하고 예제를 작성하고 있는데, 한글이 굉장히 작게 보이는 현상을 발견했습니다.

 

이클립스 글자크기 (폰트)를 변경하고 싶을 때 또는 한글이 작게 보일 때 

폰트를 설정하는 방법을 설명해 드리도록 하겠습니다.

 

 

 

예제처럼 "한글만' 굉장히 작게 보여지는 현상을 발견했습니다.

현재 설정되어 있는 폰트에서 한국어를 지원하지 않는 경우 이런 현상이 발생하기 때문에 사용중인 폰트를 변경해 주면 됩니다.

 

 

 

Window 메뉴 > Preferences 를 선택합니다.

 

 

 

좌측에서 General > Appearance > Colors and Fonts 를 선택하고

우측 네모 박스에서 Basic 를 클릭합니다.

 

 

 

스크롤을 내려서 Text Font 를 선택하고

Edit 버튼을 클릭합니다.

 

 

 

처음 이클립스를 설치했을 때에는 폰트가 Consolas 로 설정되어 있는 것을 확인하실 수 있으며

원하시는 것을 찾아 선택하시면 됩니다.(저는 일반적으로 사용되는 courier New 를 선택했습니다.)

확인 버튼을 클릭합니다.

 

 

선택한 폰트가 적용되어 한글이 정상적인 크기로 보여지는 것을 확인할 수 있습니다.

 

지금과 같은 방법으로 이클립스에서 사용하길 원하는 글꼴, 글자크기를 설정하여 사용하실 수 있으며

이클립스 테마 적용하기  를 참고하여 테마도 적용할 수 있습니다.

 

'IT > Eclipse' 카테고리의 다른 글

이클립스 메모리 설정  (0) 2015.04.08
이클립스 자동줄맞춤  (0) 2015.04.07
이클립스 단축키  (0) 2015.03.15
이클립스 테마 적용하기  (0) 2015.03.10
이클립스 다운로드 및 설치방법  (0) 2015.03.04

Posted by maze1008
,