Elemente eines Vektors zufällig anordnen

Status
Nicht offen für weitere Antworten.
M

Murmler

Gast
Hallo zusammen,

um beim erzeugen eines Billardtisches die Kugeln immerwieder anders zulegen möchte ich diese per Zufall hinlegen.
Es gibt laut den Poolbillardregeln nur 2 Sachen die beachtet werden müssen. Zum einen muss die schwarze 8 in der Mitte des Dreiecks liegen und an den hinteren Ecken des Dreiecks muss eine halbe und eine volle Billardkugel liegen.
Hat jemand von euch einen kleinen Denkanstoss für mich wie ich das am besten lösen könnte?

Viel Grüsse

Der Murmler
 

André Uhres

Top Contributor
Die Klasse java.util.Random erzeugt Zufallszahlen.
Du könntest dir eine Schleife anlegen mit der du festlegst, wieviele Zahlen du haben willst.
Mit random.nextInt(bis) erzeugst du Zahlen zwischen 0 und "bis".
Die untere Grenze könntest du mit einer entsprechenden "if"-Anweisung festlegen.
Eine mögliche Implementierung wäre z.B.:
Code:
   private int[] erzeugeZufallszahlen(final int anzahl, final int von, final int bis ) {
        int[] zahlen = new int[anzahl] ;
        Random random = new Random(System.currentTimeMillis());
        for (int i=0; i < zahlen.length;) {
            int x = random.nextInt(bis);
            if(x >= von){
                zahlen[i++] = x;
            }
        }
        return zahlen;
    }
 
G

Guest

Gast
Erst einmal möchte ich Dir für deine Antwort Danken.
Ich habe mir in der Zwischenzeit auch etwas ausgedacht was soweit funktionieren tut.

Code:
        tmpkugeln = kugeln;  // temporärer Speicher für die Kugeln
        zufall = new Vector();  // Vector in dem die Kugeln zufällig abgeegt werden
        
        // schwarze Kugel (die 8) aus der Menge nehmen da feste Position
        Kugel schwarzekugel = (Kugel)tmpkugeln.elementAt(7);
        tmpkugeln.remove(7); //löscht die Kugel aus der temporären Menge
        
        // halbe Kugel per Zufall aussuchen für einen Eckpunkt im Dreieck 
        int halb = Math.round((float)Math.random()*6 + 7);
        Kugel halbekugel = (Kugel)tmpkugeln.elementAt(halb);
        tmpkugeln.remove(halb);
        
        // volle Kugel per Zufall aussuchen für einen Eckpunkt im Dreieck
        int voll = Math.round((float)Math.random()*6);
        Kugel vollekugel = (Kugel)tmpkugeln.elementAt(voll);
        tmpkugeln.remove(voll);
        
        // alle anderen Kugel aus der Temporären Menge nehmen bis diese leer ist
        while(!tmpkugeln.isEmpty()){
            int z = Math.round((float)Math.random()*(tmpkugeln.size()-1));
            Kugel zekugel = (Kugel)tmpkugeln.elementAt(z);
            zufall.add(tmpkugeln.elementAt(z)); // die gewählte Kugel in den Zufallsvektor schieben
            tmpkugeln.remove(z); 
        }
        // schwarze Kugel in der Mitte hinzufügen
        zufall.insertElementAt(schwarzekugel,4);
        // die halbe und die volle Kugel in die beiden Ecken des Dreiecks einfügen
        if(Math.random() >= 0.5){
            zufall.insertElementAt(halbekugel,10);
            zufall.insertElementAt(vollekugel,14);
        }
        else {
            zufall.insertElementAt(vollekugel,10);
            zufall.insertElementAt(halbekugel,14);
        }

Viele Grüsse
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Programmieren eines Spieles Softwareentwicklung 25
J Programmierung eines MazeGames Softwareentwicklung 1
G Anzahl der Rekursionsaufrufe eines DFS Algorithmus Softwareentwicklung 16
F Planung und Durchführung eines Projektes Softwareentwicklung 2
A Händische Programmierung eines 1:n-ORM Softwareentwicklung 3
? Fragen zur richtigen Umsetzung eines Projektes Softwareentwicklung 3
M Ada95 - Breite eines Baumes bestimmen Softwareentwicklung 3
B Konstruktion eines Epsilon Automaten & NFA Softwareentwicklung 2
B Signatur eines Abstrakten Datentyps Softwareentwicklung 10
S Länge eines char[][] Softwareentwicklung 12
F Aufwändes eines Software Projektes Softwareentwicklung 21
M Technische Abwicklung eines Onlinekaufs Softwareentwicklung 7
-horn- "Laufzeitberechnung" eines Programmes? Softwareentwicklung 5
U Komplexität eines Algorithmus Softwareentwicklung 1
Z Herangehensweise zum "entschlüsseln" eines Dateifo Softwareentwicklung 2
G Modellierung eines graphentheoretischen Problems Softwareentwicklung 5
V alle abgeleiten Klassen eines Interfaces finden? Softwareentwicklung 2
I Object mit Hilfe eines Class-Objectes instanzieren Softwareentwicklung 3
M Software zur Erstellung eines Pflichtenhefts? Softwareentwicklung 15
F Zellen eines Excel-Sheets per VBA disablen (ausgrauen)? Softwareentwicklung 10
H Synchronisation eines Bitstreams Softwareentwicklung 4
B Programmierung eines 8051-Assemblers unter Java Softwareentwicklung 3
F Ist der Name eines Ojekts eine Eigenschaft Softwareentwicklung 7

Ähnliche Java Themen


Oben