Hallo,
ich bin gerade eifrig am schreiben meiner KI. Sah auch alles gut aus soweit, doch als ich die Partie gestartet habe, hat sich die KI bei der Erzeugung von Zuffahlszahlen mithilfe von
Random randomizer = new Random();
randomizer.nextInt(xxx);
einfach aufgehängt und alle Rechenpunkte verbraucht. Außerdem wird mir die Exception nach ab der nächsten gar nicht mehr angezeigt, sondern nur noch, dass meine KI alle Rechenpunkte verbraucht hat. Hat hier jemand etwas ähnliches erlebt oder einen Workaround gefunden?
Edit: Wichtig! Ich habe in meiner KI keine Schleife, wo sie sich aufhängen könnte. Habe es außerdem mit ThreadLocalRandom versuch, gibt aber auch nix...
Viele Grüße,
Maxim
Hallo!
Ich habe auch das Problem, dass sich mein KI ständig aufhängt (trotz eigentlich einwandfreiem Code)... Woran kann das liegen (Zufallszahlen funktionieren bei mir auch nur manchmal...)? Sind Schleifen nicht erlaubt?
LG
Direkt abstürzen tut er nicht, er gibt nur immer folgenden Fehler aus:
[SIMULATOR] Runden-Timeout nach 1000 verbrauchten Rechenpunkten. Noch 19000 Rechenpunkte übrig.
(und den eben für jede Runde)
Der Code enthält nur eine if else verzweigung, die auf eine globale Variable zugreift, die ich zwingend brauche, um die zugnummer festzustellen (oder ist das auch anders möglich?) und damit die Variablen nicht jeden zug neu definiert/überschrieben werden...
Woran kann es liegen?
*EDIT*
Seltsam... Kopiert man den ganzen code und fügt ihn in ein neues Projekt ein, funktioniert das ganze... Im alten tut sich aber nix..
P.S. Ich arbeite unter Linux - Probleme mit Java 6/7??
Es kommt ja nicht darauf an, wie dein Code kompiliert wurde, sondern der der Random-Klasse. Dieser wurde aber systemspezifisch kompiliert (stichwort 'native'), deshalb funktioniert die Klasse von System zu system anders... Ein workaround wäre vielleicht, eine eigene Random-klasse zu schreiben, aber das wäre aufwendig...
Edit: Habe gerade eben KI kopiert und laufen lassen. Das Ergebnis: Zwei Runden läuft die KI problemlos, bei der dritten hängt sie sich wieder auf... Ab der nächsten Simulation geht gar nix mehr, und die KI hängt sich gleich bei der ersten runde auf...
Habe mal ALLES rauskommentiert, bis der folgende Code übrig geblieben ist:
public void zug(int id, Spiel.Zustand zustand, Spiel.Zug zug) {
zug.ausgabe("Am anfang des zugs!");
zug.bieten(101);
}
Hängt aber trotzdem... Muss wohl an esu liegen
Edit: Habe einen Workaround gefunden: In tab KI-Implementierung auf die KI die hängt mit der rechten Maustaste klicken und im Kontextmenü "Neue Version" auswählen. Geht gut - für eine Simulation :-/ Liegt vermutlich daran, wie esu die Daten speichert und nutzt... Man sollte einen Sonderpreis an denjenigen geben, der den Bug findet & behebt. Das ist sicher nicht einfach ;-)
Danke dafür! Ist auf jeden fall einfacher als jedes mal nen neuen KI anzulegen... :) Der Fehler wird bei (der/die/das?? ;) ESU liegen, hatte derartiges wie gesagt auch schon öfters..
Update: Laut diesem Post hängen sich wohl auch Python KIs beim generieren von Zufallszahlen auf... Was ist da los????
Oder wenn ihr Random nicht verwenden wollt, wie wärs mit:
public static int generate(int min, int max){
return (int) Math.round(Math.random()*(max-min)+min);
}
Fritz Windisch said:
Oder wenn ihr Random nicht verwenden wollt, wie wärs mit:
public static int generate(int min, int max){
return (int) Math.round(Math.random()*(max-min)+min);
}
Was ist denn der Unterschied zwischen Random und random()???
Versteh ich dich da grade iwie falsch?