N'abend, ich hab da ein Problem mit meinem Code, der recht zäh arbeitet.
Und zwar geht es um folgendes. Ich generiere mir 2 Zahlen mittels der srand()-Funktion und prüfe dann, ob ich mir genau diese 2 Zahlen in dieser Kombination schon mal gegeben wurden. Dazu speichere ich mir jede erstellte Zahlenkombination in einem Array ab und durchsuche dieses dann nach den aktuell generierten Zahlen. Also kleines Beispiel,
In dem Array steht schon: 8/2, 3/5, 1/8, 5/8, 7/9, 2/6, ........
Jetzt hab ich mir die Zahlen generiert 5/8 --> Ergebnis ist, dass die Zahlen schon drin sind im Array, deshalb muss ich mir neue generieren. Da kommt jetzt das Problem auf, ich brauche immer Zahlen im Raum zwischen 1 bis 10 und da gibt es ja nun mal nur 100 Kombinationen und ich muss mindestens 95% Prozent der Kombinationen schaffen.
Also wie kann ich den Code hinsichtlich der Generierung schneller machen, wenn schon sehr viele Kombinationen vergeben sind? Kann mir da jemand helfen?
Ich poste hier mal ein bissle Code dazu
Und zwar geht es um folgendes. Ich generiere mir 2 Zahlen mittels der srand()-Funktion und prüfe dann, ob ich mir genau diese 2 Zahlen in dieser Kombination schon mal gegeben wurden. Dazu speichere ich mir jede erstellte Zahlenkombination in einem Array ab und durchsuche dieses dann nach den aktuell generierten Zahlen. Also kleines Beispiel,
In dem Array steht schon: 8/2, 3/5, 1/8, 5/8, 7/9, 2/6, ........
Jetzt hab ich mir die Zahlen generiert 5/8 --> Ergebnis ist, dass die Zahlen schon drin sind im Array, deshalb muss ich mir neue generieren. Da kommt jetzt das Problem auf, ich brauche immer Zahlen im Raum zwischen 1 bis 10 und da gibt es ja nun mal nur 100 Kombinationen und ich muss mindestens 95% Prozent der Kombinationen schaffen.
Also wie kann ich den Code hinsichtlich der Generierung schneller machen, wenn schon sehr viele Kombinationen vergeben sind? Kann mir da jemand helfen?
Ich poste hier mal ein bissle Code dazu
Code:
// generiert Zufallszahl
int zufallszahl(int min, int max)
{
srand((unsigned int)time(0));
int zahl = min + (rand()%(max-min+1));
Sleep(zufallszahl2(333, 1111));
return zahl;
//Pruefe das Array, ob die Zahlen schon drin sind
bool pruefe_arrays(int x_wert, int y_wert)
{
// hier sucht er danach und liefert wenn gefunden true zurück, und false bei noch nicht enthalten
}
// Eigentliche Funktion, die alle Funktionen kombiniert
void findeNeueZahlen()
{
// wie schaff ich es jetzt, dass er hier wenn ein Wert gefunden wurde, der schon vorhanden ist, nicht x mal neu generiert wird? Da das bei fortgeschrittener Zahlengenerierung schon einmal 3 Minuten dauern kann, bis eine Kombination gefunden wurde, die es noch nicht gibt
do
{
xWert = zufallszahl(1, 10);
yWert = zufallszahl(1, 10);
wert =pruefe_arrays(xWert, yWert);
}
while(!wert);
}