Hi!
Ich habe bei untenstehendem Code, das Problem, daß die "Zufallszahlen" einfach zu schlecht sind.
Es kann schonmal vorkommen, daß diese Berechnung über 30sec dauert!
Hat jemand vielleicht eine schnellere/bessere Lösung?
Würde mir sehr helfen.
--- CODE ---
enum cards get_randomcard()
{
int result,ran;
srand((unsigned int)time((time_t *)NULL));
result=(rand()%8)+7;
ran=(rand()%4)+1;
result=result+(ran*100);
return result;
}
enum cards get_card()
{
enum cards card;
do {
card=get_randomcard();
} while(used_stack[card]);
used_stack[card]++;
return card;
}
void init_cardstack()
{
int i;
unsigned char j;
for(i=0;i<=420;i++)
used_stack<i>=0;
for(i=1;i<=3;i++)
{
for(j=1;j<=5;j++)
cards_player[j]<i>=get_card();
}
}
--- CODE ENDE ---
Vielen Dank
Felix
"Zufallszahlen"
Re:
Hi,
der Zufallsgenerator der libc kann so schlecht nicht sein. Natürlich gibt es bessere, aber ich würde hier eher einen schlechten Algorithmus vermuten. Du könntest z.B. die unbenutzten Karten in ein separates Array legen und daraus eine auswählen. Das liefert garantiert schon bei der ersten Zufallszahl einen Treffer.
Gruß,
hjb
der Zufallsgenerator der libc kann so schlecht nicht sein. Natürlich gibt es bessere, aber ich würde hier eher einen schlechten Algorithmus vermuten. Du könntest z.B. die unbenutzten Karten in ein separates Array legen und daraus eine auswählen. Das liefert garantiert schon bei der ersten Zufallszahl einen Treffer.
Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?
Re:
Hi!
Das Erzeugen von Zufallszahlen ist viel zu wichtig, um dem Zufall überlassen zu werden!
Cheers,
Wolfgang
Das Erzeugen von Zufallszahlen ist viel zu wichtig, um dem Zufall überlassen zu werden!
Cheers,
Wolfgang