2016-07-28 5 views
-3

int 배열에 생성하는 난수를 전달하고 싶습니다. 나는 무언가를 얻지 만 그게 옳지 않다. printf("%d\n", rand() % 50);난수 배열을 int 배열 C에 넣는 방법

이없는 등의 제한으로 새로운 난수를 생성 : haystack[i] = rand();

그들이 할 할 이유가 없다이 임의의 숫자 < (50) 인쇄

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

int main() 
{ 
    int i, n; 
    time_t t; 

    n = 5; 

    int haystack [n]; 



    /* Intializes random number generator */ 
    srand((unsigned) time(&t)); 

    /* Print 5 random numbers from 0 to 50 */ 
    for(i = 0 ; i < n ; i++) 
    { 
     printf("%d\n", rand() % 50); 
     haystack[i] = rand(); 
     printf("%d\n", haystack[i]); 

    } 

    return(0); 
} 
+6

_not right_을 무엇입니까? – LPs

+0

int haystackp []는 srand time과 rand로 숫자 50까지 생성 한 숫자가 아닌 숫자를 출력합니다. 자신의 시드로 자신을 생성합니다. – Bejns

+0

rand()를 두 번 호출하면 두 개의 다른 난수가 생깁니다. 난수를 재사용하려면 변수에 저장하고 인쇄 및 할당 문에 다시 사용하십시오. – dubes

답변

2

사전에

감사합니다, 같은.

난 당신 같은 것을 원하는 것 같아요 다음 unitialised 변수 t으로 문제를 차치

haystack[i] = rand() % 50; 
printf("%d", haystack[i]) 
0

을, 당신은 printf은 당신이 당신의 haystack에 저장 당신의 다른 임의의 값을 사용하고 있습니다.

/* Print 5 random numbers from 0 to 50 */ 
    int rand = 0; 
    for(i = 0 ; i < n ; i++) 
    { 
     rand = rand() % 50; 
     printf("%d\n", rand); 
     haystack[i] = rand; 
     printf("%d\n", haystack[i]); 

    } 
2

문제는 rand를 호출 할 때마다 다시 새로운/"다른"값을 당신을 줄 것입니다.

먼저 배열에 번호를 할당 한 다음 나에게이

/* Print 5 random numbers from 0 to 50 */ 
    for(i = 0 ; i < n ; i++) 
    { 
     haystack[i] = rand() % 50; 
     printf("%d\n", haystack[i]); 

    } 
0

봐 확인 인쇄,하지만 당신은 당신이 haystack에 저장하고있는 일에 다른 rand()를 인쇄 할 찾으시는 것입니까?

당신은 당신은 랜드를 사용하는

0
printf("%d\n", rand() % 50); 
    haystack[i] = rand(); 
  1. printf("%d\n", haystack[i] = rand() % 50); 단일 문에 for 루프 본문을 붕괴()에 두 번, 첫 번째의 printf와 다음 과제에서이 문제를 해결 할 수 있습니다.

    그래서 rand()는 이전 값과 같지 않은 다른 값을 생성합니다.

  2. rand() % 50은 값을 50보다 작게 지정하지만 할당 작업에서 50을 초과 할 수 있으므로 처리하십시오. 그러나 한 번에 한 번만 rand()를 사용하는 것을 선호합니다. 이 도움이 될 것입니다

희망