2012-05-23 2 views
-3

java.util.random의 nextInt 함수를 사용하여 임의의 숫자를 가져오고 있습니다. 내 코드가 함수에 0을 전달할 수있는 것으로 나타났습니다. 이 사건에서 어떤 결과가 나오는지 궁금합니다. 나는 그것이 매번 0을 반환 할 것이라고 추측하지만 확실하지 않습니다.random.nextInt()에 0을 전달하면 어떻게됩니까

+3

당신은 항상 그것을 시도, 또는 소스에서 볼 수 있었다 ... –

+0

Downvote은 자신을 테스트하는 간단한 것 때문이다. 결과를 이해하지 못하면 게시하고 왜 그런지 물을 수 있습니다. – SirPentor

답변

4

0을 입력하면 IllegalArgumentException이 표시됩니다. javadoc에서

:

매개 변수 : n -하여 임의의 숫자에 바인딩을 반환합니다. 양수 여야합니다.
결과 : 다음 임의 균일 분산 int 값 0이 난수 생성기 시퀀스에서 (포함) 및 N- (배타적)
예외 간 : IllegalArgumentException-n이 양수가 아닌 경우

4

n = 0을 전달하면 런타임 예외가 발생합니다.

public int nextInt(int n) { 
    if (n <= 0) 
     throw new IllegalArgumentException("n must be positive"); 

    if ((n & -n) == n) // i.e., n is a power of 2 
     return (int)((n * (long)next(31)) >> 31); 

    int bits, val; 
    do { 
     bits = next(31); 
     val = bits % n; 
    } while (bits - val + (n-1) < 0); 
    return val; 
} 
관련 문제