2016-08-11 4 views
0

Gegeben eine Menge X, mit Java, wie wähle ich zwei zufällige Elemente aus, so dass ich vielleicht ein Element inkrementieren und gleichzeitig das andere dekrementieren könnte. Vielen Dank im Voraus.Wie wählt man zwei zufällige Elemente aus einem Set?

+1

den folgenden Link Hilfe Does: http://stackoverflow.com/questions/124671/picking-a-random-element-from-a-set – steveb

Antwort

0

Ich würde die Größe des Satzes überprüfen und dann zufällig zwei "Indizes" darunter auswählen. Nicht, dass Set Elemente in Java haben keine echten Indizes natürlich (zumindest nicht in dem Sinne, dass List s haben sie, mit einer get(int) Methode, aber dieses Verhalten kann simuliert werden durch Iterieren über die Set und Zählen der Anzahl der Schritte):

Set<Object> set = ...; 
Random random = new Random(); // or some better RNG 
int size = set.size(); 
int step1 = rand.nextInt(size - 1); 
int step2 = rand.mextInt(size - step1); 

Iterator<Object> iter = set.iterator(); 
for (int i = 0; i < step1 - 1; ++i) { 
    iter.next(); 
} 
Object rand1 = iter.next(); 

for (int i = 0; i < step2 - 1; ++i) { 
    iter.next(); // Note, this is the SAME iterator! 
} 
Object rand2 = iter.next(); 
+0

ja dies, total passt meine Situation – aditya

Verwandte Themen