Dieses Programm soll eine Simulation ausführen, um zu sehen, ob eine Zahl, die der Benutzer eingegeben hat, weniger als drei zufällig generierte Zahlen ist. Alle Zahlen liegen zwischen 0 und 1. Der Benutzer gibt die Anzahl der Versuche für die Ausführung der Simulation an, und dann teilt das Programm dem Benutzer mit, wie oft alle drei Zahlen kleiner waren als ihre und wie oft es nicht war. Das Problem ist, dass ich jedes Mal, wenn ich das Programm laufe, immer 1 oder 1 Fehler erhalte, unabhängig davon, wie viele Versuche ausgeführt werden sollten. Ich denke, das liegt daran, dass ich nur einen Satz von Zufallszahlen erzeuge, anstatt wie oft angegeben, aber ich bin mir nicht sicher, wie ich das beheben soll.Generieren von mehreren Zufallszahlen in einer Schleife in C
hier ist der Code -
int main()
{
int seed, trials, pass1, fail1, i, j, k;
float reli;
printf("Enter individual component reliability:\n");
scanf("%f", &reli);
printf("Enter number of trials:\n");
scanf("%u", &trials);
srand(time(NULL));
float rndm1 = (double)rand()/(double)RAND_MAX;
float rndm2 = (double)rand()/(double)RAND_MAX;
float rndm3 = (double)rand()/(double)RAND_MAX;
while(k <= trials); {
pass1 = 0;
fail1 = 0;
if (rndm1 <= reli && rndm2 <= reli && rndm3 <= reli){
pass1 = pass1 + 1;
}
else {
fail1 = fail1 + 1;
}
k++;
}
printf("# of passes = %d, #of failures = %d", pass1, fail1);
}
Dank
'scanf ("% u", & Studien);' -> 'scanf ("% d" , & Versuche); ' –
Wenn Sie eine lokale nichtstatische Variable definieren (wie zum Beispiel Ihre Variable' k'), wird sie nicht automatisch initialisiert. Es wird einen * unbestimmten * Wert haben. Die Verwendung ohne Initialisierung könnte zu * undefiniertem Verhalten * führen. –
Sie müssen die Rndm1, Rndm2, Rnd3 und Aufrufe an Rand() innerhalb der While-Schleife verschieben. Sie müssen für jeden Versuch neue Zufallszahlen generieren (ich vermute das). –