2016-04-16 7 views
0

// Ich habe eine Funktion geschrieben, die die Werte eines Arrays zurückgibt. Die Werte müssen zufällig gewählt werden. Aber in der Hauptfunktion, wenn ich die Funktion rufe, gibt es mir die gleichen Werte. Ich will verschiedene Zahlen zufällig, Kann ich es vermeiden?Kann ich eine andere Sequenz von einer Funktion zurückgeben?

void a(); 

int main(){ 
a(); 
a(); 
return 0; 
} 
void a(){ 
int i, b[6]; 
srand(time(NULL)); 

for(i=0; i<6; i++){ 
    b[i]= rand()%10 +1; 
    printf("%d " , b[i]); 
    if(i==5) printf("\n"); 
} 
} 
+0

Sie sagen, in Funktion a, deklarieren Sie einen Samen, der nach dem Zufallsprinzip ausgewählt ist und verwenden Sie ihn. Recht? – hekinci

+0

Verwenden Sie die korrekten Deklaratoren für die Prototypfunktion. Und der Code ist sowieso nicht standardkonform, da Sie nicht die Funktionen deklariert haben, die Sie verwenden ('printf',' rand', etc.). – Olaf

Antwort

1
void a(); 

int main(){ 
srand(time(NULL)); 
a(); 
a(); 
return 0; 
} 
void a(){ 
int i, b[6]; 

for(i=0; i<6; i++){ 
    b[i]= rand()%10 +1; 
    printf("%d " , b[i]); 
    if(i==5) printf("\n"); 
} 
} 
2

Sie sollten nur die randomizer einmal Samen. Wenn man es zweimal hintereinander so schnell hintereinander setzt, besteht eine große Chance, dass die Zeit und somit der Startwert immer noch gleich ist und der Pseudozufallszahlengenerator die gleiche Sequenz zweimal zurückgibt.

void a(); 

int main() 
{ 
    srand(time(NULL)); //Seed only once... 
    a(); 
    a(); 
    return 0; 
} 

void a() 
{ 
    int i, b[6]; 


    for(i=0; i<6; i++) 
    { 
     b[i]= rand()%10 +1; 
     printf("%d " , b[i]); 
     if(i==5) 
      printf("\n"); 
    } 
} 
Verwandte Themen