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.jpg

    Leider 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


Anmelden zum Antworten