Zufällige Zahlen C Programmierung?
Ich soll ein Lotto Programm schreiben das zuerst zufällige Zahlen als Gewinner-Kombination ausgiebt. Unter dieser Kombination sollen dann weiter unterschiedliche zufallszahlen Kombinationen ausgegeben werden.
In der der ersten kombinaton wurde eine gleiche Zahl die mit der Gewinnerkombination übereinstimmt beim x-ten Zug gefunden.
Bei der zweiten Kombination wurden zwei gleiche Zahlen gefunden die mit der Gewinnerkombination übereinstimmen beim x-ten Zug gefunden.
Usw.
Problem ist das ALLE Zahlenkombinationen gleich sind. Eigentlich soll die Gewinner kombination zufällig sein und sich von den anderen unterscheiden.
Ich habe es mit stand Time NULL gemacht.
Ich hoffe ihr versteht was ich meine
Danke!
#include<stdlib.h>
#include<time.h>
#include<stdio.h>
#include<conio.h>
void zufall (const int werte[], int Schritt, int N)
{ int i,b;
printf("\n\n");
for(b=0;b<7;b++)
{
for(i = 0; i < N; i++)
{
printf("%3d",werte[i]);
}
printf("\n");
}
}
void ausgabe (const int werte[], int Schritt, int N)
{
int i,b;
for(i = 0; i < N; i++)
{
textcolor(RED);
if(Schritt==6)
{
printf("%3d",werte[i]);
}
}
textcolor(WHITE);
}
void SortSelection(int a[], int anz)
{
int i,j,min,hilf,b;
const int N = 6;
srand(time(NULL));
int liste[N];
for(i = 0; i < N; i++)
liste[i]=rand()%49;
for(i = 0; i < anz; i++)
{
min = i;
for(j = i+1 ; j < anz ; j++)
if(a[j] < a[min])
min=j;
if(min!= i)
{
hilf=a[min];
a[min]=a[i];
a[i]=hilf;
}
ausgabe(a,i+1,anz);
}
}
int main(void)
{
int i;
const int N = 6;
srand(time(0));
int liste[N];
for(i = 0; i < N; i++)
liste[i]=rand()%49;
printf("\nLotto 6 aus 49");
printf("\n==============");
printf("\nZahlen der x-ten Ziehung:\n");
ausgabe(liste,N+1,N);
SortSelection(liste,N);
zufall(liste,N+1,N);
return 0;
}
1 Antwort
time(0) ist die Zeit in Sekunden. Du initialisierst also den Zufallsgenerator immer mit dem selben Seed, da das Programm nicht länger als 1 Sekunde läuft, folglich bekommst du die selben Zahlen. Einfach nur einmal initialisieren in main(), das sollte das Problem lösen.
Wie er es sagt: nur einmal initialisieren mit srand, also außerhalb der Schleife und jedenfalls nicht in SortSelection
zufall() gibt die selben Werte 7 mal aus und ausgabe() gibt das nur aus, wenn Schritt == 6 ist - wieso ist das überhaupt ein Parameter?
Time 0 bezieht sich ja auf die aktuelle Uhrzeit also kommt jedes mal was anderes raus. Aber die Gewinnerkombination soll sich ja mit unteren unterscheiden. Wie kann ich oben und unten andere Kombinationen machen?