2016-06-05 11 views
-2

Für ein kleines Programm, das ich ausführen, verwende ich die rand() -Funktion, um Zahlen für ein Array von 23 ganzen Zahlen. Ich habe festgestellt, dass jedes Mal, wenn ich den Code ausführe, dieselben Zahlen wiederbenutzt werden, die zuvor im Array verwendet wurden, sodass ich bei jeder Iteration nie unterschiedliche Ergebnisse erhalte. Wie kann ich dieses Problem beheben?rand() Array ändert sich nicht jedes Mal, wenn ich den Code ausführen

Edit: Der Code ist und Experiment des Geburtstags Paradox. Dieses Paradox gibt an, dass die Chance, dass Sie einen Geburtstag mit jemandem in einem Raum mit 23 Personen teilen, 50% ist, aber natürlich denken die meisten Leute, dass es ziemlich klein ist.

#include "stdio.h" 
#include "stdlib.h" 

#define interations 10 //number of repitition in the code for a more accurate percentage 
#define numppl 23 //number of people 

int main() 
{ 
    int inv; 
    float percent = 0, sum = 0; 
    int i, j, k; 
    int seq[numppl]; 

    for (inv = 0; inv < interations; inv++) 
    { 
     for (i = 0; i < numppl; i++) { 
      seq[i] = rand() % 365; //creates a random array of 'numppl' integers every iteration 
     } 

     for (j = 0; j < numppl; j++) 
     { 
      for (k = j + 1; k < numppl; k++) 
      { 
       if (seq[j] == seq[k]) //if any two number in the array match each other, increment sum by 1 
        sum++; 
      } 
     } 
    } 

    percent = (sum/interations) * 100; //divide the amount of arrays with numbers that match with the number of total arrays generated for a percentage 

    printf("Chance of two people sharing the same birthday is %f percent", percent); 
} 

Jede Iteration ist eine andere Reihe von Zufallszahlen, aber wenn ich den Code erneut ausführen, sind die Arrays die gleiche wie zuvor, so erhalte ich den gleichen Prozentsatz

+1

Suchen Sie nach 'srand' –

+4

Sie müssen uns den Code zeigen, den Sie dafür geschrieben haben. Wir können dir nicht helfen, wenn wir nicht wissen, was du getan hast. – Sterls

Antwort

1

, dass die erwartete behavoiur von rand() ist . Sie müssen den Zufallszahlengenerator mit srand() initialisieren.

Verwandte Themen