Random liefer miese Ergebnisse
-
Hi,
ich benutze folgenden Code:
/* Die einfache Spielmethode setzt an einer zufälligen Stelle im Spielfeld einen Stein, falls das Feld frei ist. */ bool Computer::pcEasy(SpielfeldModel* model) { Feld *feld = NULL; //Temporärer Speicher für Feld int x = 0; //Koordinaten des PC-Zugs randomize(); //Zufallsgenerator starten do { x = random(CONST__anzX); //zufällige x-Koordinate if(model->isValidCoordX(x)) //Prüfen, ob Koordinate erlaubt ist { if(!model->columnIsFull(x)) //Spalte schon voll? { feld = model->getHighestField(x); //Das Feld (x|y) holen } } } while(feld == NULL); //Solange kein Feld gefunden wurde feld->setPlayer(this); //Dem gefundenen Feld den Besitzer zuweisen return true; }
Zum Setzen von Spielfeldern auf einer 7x8-Matrix. Folgendes Resultat:
http://tempim.de/picture/thumb/1905/random.jpgLeider sieht es so bei sehr vielen Durchgängen aus. Für mich heißt das, dass random() keine guten Ergebnisse liefert.
Was gibt es für Alternativen?
-
Fehler gefunden.
Ich rufe randomize() bei jedem Methodenaufruf auf. Das ist wohl ungesund
-
Hallo
Ja, rondomize soll nur einmal bei Programmstart aufgerufen werden. Weiteres findest du im Zufallszahlen.Artikel im Forumsmagazin.
bis bald
akari