2017-11-26 10 views
0

7 개의 숫자를 생성하는 반복되지 않는 숫자 생성기를 지정하는 과제가 주어졌습니다. 나는 rand 함수를 사용했다. 숫자가 반복적이 아닌지 확인하는 방법을 모르겠다. 당신은 배열 및 다음 시간에 모든 이전에 생성 된 난수를 저장해야 도움반복되지 않는 난수 사용 (C에서)

int i, n; 
    time_t t; 
    n = 7; 
    srand((unsigned) time(&t)); 

    for(i = 0 ; i < n ; i++) { 
    printf("%d\t", rand() % 35);} 
+2

숫자 1 - N으로 배열을 채우고 임의로 배열을 뒤섞어 배열에서 처음 7 개의 숫자를 가져옵니다. 순서 섞기 : 1에서 N까지 i와 범위 i..N에서 무작위로 선택한 요소를 교체하십시오. 또는 웹 검색을하십시오 : 이것은 매우 자주 묻는 질문입니다. –

+3

https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle – coderredoc

답변

0

주셔서 감사합니다 이후 당신은 이미 생성되었는지의 여부를 새로 만든 임의의 숫자와 배열 값을 비교해야합니다. 아래 코드를 읽고 자신을 시험해보십시오.

int i, n; 
time_t t; 
n = 7; 
int randval[n] 
int rval = 0; 
int j = 0; 
srand((unsigned) time(&t)); 
int found = 0; 
for(i = 0 ; i < n ;) { 
    rval = rand(); 
    j = 0; 
    found = 0; 
    while(j++ < i){ 
    if(rand[j] == rval){ 
     found = 1; 
     break; 
    } 
    } 
    if(!found){  
    randval[i] = rval; 
    i++; 
    printf("%d\t", rval % 35); 
    } 
}