'random'에 해당되는 글 2건

  1. 2015.03.25 자바 랜덤 문자열 함수(RandomString)
  2. 2015.03.24 자바 랜덤함수(Java Random)

자바에서는 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
,