2012-09-13 6 views
-2

I는 C.에서 난수를 생성하는 다음 코드를 기록한는 C는 난수 발생기

int main (int argc, char *argv[]) 
{ 
    unsigned int iseed = (unsigned int)time(NULL); 
    srand (iseed); 

    /* Generate random number*/ 
    int i; 
    for (i = 0; i < 1; i++) 
    { 
     printf ("Random[%d]= %u\n", i, rand()); 
    } 
    return 0; 
} 

출력 내게 I 출력에서 ​​인쇄 숫자의 수를 변경하는 방법 10 자리 난수를 제공?

+0

해결하려는 문제는 무엇입니까? –

+0

rand가 더 큰 숫자를 반환하는 방법, printf 문이 더 많거나 적은 숫자를 표시하도록 만드는 방법을 묻고 있습니까? – selbie

+0

또한 RAND_MAX는 일반적으로 많은 시스템에서 32767입니다. 따라서 코드는 컴파일 된 위치에 따라 5 자리 숫자로 제한 될 수 있습니다. – selbie

답변

3

rand()은 0과 RAND_MAX 사이의 수를 제공하며, 큰 숫자 일 수 있습니다. 당신이 범위 [0, N)에 균일 한 샘플을 얻고 싶은 경우에

, 당신은 지역으로 범위를 분할해야합니다

int my_max = (RAND_MAX/N) * N; 

int result; 

while ((result = rand()) >= my_max) { } // #1 

return result % N; 
라인 #1의 상태는 매우 드물게에만 만족해서는 안하지만, 우리는 다시 할 필요가

결과가 높은 결과에 대한 편향을 피하기 위해 결과가 N의 배수 인 범위 안에 있지 않은 경우에 발생합니다.