본문 바로가기

Languages/java

[JAVA] 난수(random number) 생성하기 기본 예제 및 응용

728x90
반응형

자바에는 java.util.random이라는게 있고, Math.random()이 있다  어떻게 쓰는거고 뭐에 쓸까? 

 

필자같은 경우 웹사이트 crawling 할 때 1초 정도의 Thread.sleep(1000) 을 주고 파싱했었는데 이럴경우 ip 차단 되는 경우가 발생한다. 이걸 회피하는 가장 단순한 방법중 하나는 난수 활용으로 주기를 불규칙하게 하는 방법이 있다. 

 

1. java.util.random 활용방법

Random rnd = new Random();
for(int i = 0 ; i < 100; i++){
    // do something for parsing web site .. 
    // do something
    int iInterval = rnd.nextInt(10000); // 0 - 10000(10초) 사이 난수 
    Thread.sleep(iInterval); // 0 ~ 10초 사이 sleep을 줌
}

2. Math.random() 활용방법

Random rnd = new Random();
for(int i = 0 ; i < 100; i++){
    // do something for parsing web site .. 
    // do something
    int iInterval = (int) Math.random() * 100000 ; // (0.0 ~ 1.0 * 100000) = 0 ~ 10초 사이 난수
    Thread.sleep(iInterval); // 0 ~ 10초 사이 sleep을 줌
}

여기서 가장큰 실수가 발생하는데 돌리면 계속 0이 나온다..

아래처럼 괄호를 쳐야한다. 

Random rnd = new Random();
for(int i = 0 ; i < 100; i++){
    // do something for parsing web site .. 
    // do something
    int iInterval = (int) (Math.random() * 100000) ; // (0.0 ~ 1.0 * 100000) = 0 ~ 10초 사이 난수
    Thread.sleep(iInterval); // 0 ~ 10초 사이 sleep을 줌
}

 

728x90
반응형