Entwickler-Ecke

Alle Sprachen - Alle Plattformen - Zufallszahlen in C


JeThi - Fr 25.11.16 23:03
Titel: Zufallszahlen in C
Hallo Leute,
ich bin neu hier, also entschuldigt bitte, wenn diese Frage bereits existiert oder ich in einem falschen Thread nachfrage. Könnt ihr mir trotzdem gerne Bescheid sagen. Nun aber zu meiner Frage.

Ich habe vor eine Art Fussballsimulation zu schreiben in C, einfach nur um ein bisschen das Programmieren an einer konkreten Aufgabe zu vertiefen. Also entschied ich mich zum anhängendem Quellcode. Dabei habe ich mir gedacht, ich setze die jeweiligen Heim- und Auswärtstore als Variablen fest, um mithilfe derer dann einfacher die Tabelle errechnen zu können. Jedoch war mein Ziel, dass sich die Ergebnisse der einzelnen Spiele bei jedem Programmstart ändern, also die Zufallszahlen in den Variablen variieren? Kennt einer von euch evtl eine Lösung?

Ich danke jetzt bereits für eure Hilfe und entschuldige mich für jeden Fehler, den ihr im Programmcode findet. Für Tipps, die nichts mit meinem Problem zu tun haben bin ich selbstverständlich jederzeit offen.

Vielen Dank


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
  #include <stdio.h>
  #include <stdlib.h>
  #include <time.h>

  int main(void)
  {
    int i, ht1, ht2, ht3, ht4, ht5, ht6, at1, at2, at3, at4, at5, at6;//Variablen aufzählen
    ht1=rand() % 4;//Variablen definieren
    ht2=rand() % 4;
    ht3=rand() % 4;
    ht4=rand() % 4;
    ht5=rand() % 4;
    ht6=rand() % 4;
    at1=rand() % 4;
    at2=rand() % 4;
    at3=rand() % 4;
    at4=rand() % 4;
    at5=rand() % 4;
    at6=rand() % 4;
    time_t t;


    time(&t);

srand((unsigned)time(NULL));              /* Zufallsgenerator initialisieren */

    printf("Hertha BSC %i:%i Hamburger SV\n", ht1, at1);
    printf("BSC Jena %i:%i TSV Zarpen\n", ht2, at2);//Ergebnis ausgeben
    system("PAUSE");
    printf("\nHertha BSC %i:%i BSC Jena\n", ht3, at3);
    printf("Hamburger SV %i:%i TSV Zarpen\n", ht4, at4);
    system("PAUSE");
    printf("\nTSV Zarpen %i:%i Hertha BSC\n", ht5, at5);
    printf("BSC Jena %i:%i Hamburger SV\n", ht6, at6);
  }


Moderiert von user profile iconNarses: Anhang in inline-code geändert.


ub60 - Sa 26.11.16 00:40

srand() muss vor rand() aufgerufen werden.

ub60


Th69 - Sa 26.11.16 13:04

Hallo und :welcome:,

und du solltest unbedingt Arrays benutzen, damit du nicht für jede Variable extra Codezeilen erzeugen mußt:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
enum { MAX_CLUBS = 6 };

int ht[MAX_CLUBS], at[MAX_CLUBS];
int i;

for (i = 0; i < MAX_CLUBS; i++)
{
  ht[i] = rand() % 4;
  at[i] = rand() % 4;
}

Und zur Ergänzung zu user profile iconub60: srand() nur einmalig bei Programmstart (also üblicherweise direkt in der main()) aufrufen.
Und der time()-Aufruf ist hier überflüssig.