Frage von Trachom, 56

Java: random aus array(spigot)?

hey.. ich habe in einer array list mehrere spieler gespeichert, möchte aber jetzt, dass zufällig einer davon rausgepickt wird und etwas ausgeführt wird, was nur den ausgewählten spieler betrifft. wie kann ich das machen?

Antwort
von Willibergi, 30

Es gibt mehrere Arten, dies zu lösen:

ArrayList<Player> al = {SpielerA, SpielerB, SpielerC};
Player rand = al.get(Math.random*al.size);

Der Spieler rand ist nun also ein zufällig ausgewählter Spieler aus der ArrayList.

ArrayList<Player> al = {SpielerA, SpielerB, SpielerC}
Player rand = al.get(new java.util.Random().nextInt(al.size()));

Letzteres wäre hierbei die professionellere Lösung. ^^

Ich hoffe, ich konnte dir helfen; wenn du noch Fragen hast, kommentiere einfach.

LG Willibergi

Kommentar von Trachom ,

Aber ich mache das immer so:

al.add(p);

und dann wollte ich von allen, die in der arraylist sind, einen spieler auswählen. Und dafür kann ich ja keine Liste erstellen, da ich nicht weiß, wie die Spieler später heißen^^

Kommentar von Trachom ,

Wobei ich vorher den Player als p definiert habe..

Kommentar von Willibergi ,

Ich verstehe nicht, was du tun möchtest.

Du willst einen Player p zur ArrayList al hinzufügen.

So weit so gut. Aber wann willst du zufällig einen Player auswählen? 

LG Willibergi

Kommentar von Trachom ,

Wenn ein scheduler abläuft, soll ein zufälliger Spieler ausgewählt werden.

Kommentar von Willibergi ,

Ja - das kannst du mit dem oben genannten Quellcode erreichen.

Ein zufälliger Spieler aus der ArrayList al wird als Player rand definiert.

Wo liegt das Problem? ;)

LG Willibergi

Antwort
von androhecker, 37

Schaffst du es jetzt wirklich nicht die Klasse Random zu benutzen? Das ist wirklich nicht so schwer, ich bezweifle dass du je richtig Java gelernt hast, und Spigot setzt gute Java Kenntnisse voraus.
https://docs.oracle.com/javase/8/docs/api/java/util/Random.html
Da steht alles drinnen.

Kommentar von Trachom ,

Mein Problem dabei ist, die ArrayList aufzurufen und einen spieler aufzurufen..

Kommentar von androhecker ,

Du erstellst eine Random int mit dem Maximalwert der Größe der Liste, dann bekommst du mit der get(int index) Methode deinen Spieler. Wo ist das Problem? Das schafft jeder Anfänger.

Antwort
von Jonas711, 27
Spieler[] array = {spieler1,spieler2,spieler3};
Random r = new Random();
int pos = r.nextInt(array.length);
Spieler spieler = array[pos];

Hab gepennt, es geht ja um eine ArrayList. Ändert aber vom Prinzip her nichts.

Antwort
von FragFragFrag999, 28

Versuch's mit:

<LIST>.get(new Random().nextInt(<LIST>.size()-1);


Kommentar von Jonas711 ,

Ohne -1

Keine passende Antwort gefunden?

Fragen Sie die Community