"Zufallszahlen"

Post Reply
Message
Author
Felix

"Zufallszahlen"

#1 Post by Felix »

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

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

Re:

#2 Post by hjb »

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
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

siegel

Re:

#3 Post by siegel »

Hi

Ich glaube in der letzten oder vorletzten LINUX-Gazette war ein interessannter Artikel über Zufallszahlen. Das ist nämlich eine richitge Wissenschaft, wenn man es genau nimmt.

Gruss
Sulu

bakunin
Posts: 597
Joined: 16. Aug 1999 6:44
Location: Lorsch (Südhessen)
Contact:

Re:

#4 Post by bakunin »

Hi!

Das Erzeugen von Zufallszahlen ist viel zu wichtig, um dem Zufall überlassen zu werden!

Cheers,
Wolfgang

Weissi

Re:

#5 Post by Weissi »

Mach mal cat /dev/random und beweg die Maus und drück n paar tasten ;)))

Falls dir das zu langsam geht /dev/urandom

Post Reply