J'ai un ensemble d'objets dans un Vecteur à partir duquel je voudrais sélectionner un sous-ensemble aléatoire (par exemple de 100 articles de revenir; pick 5 au hasard). Dans mon premier (à la hâte) passer j'ai fait une très simple et peut-être trop intelligent solution:
Vector itemsVector = getItems();
Collections.shuffle(itemsVector);
itemsVector.setSize(5);
Tout cela a l'avantage d'être simple et sympathique, je pense qu'elle ne va pas à l'échelle très bien, c'est à dire des Collections.shuffle() doit être en O(n) au moins. Mon alternative est moins intelligent
Vector itemsVector = getItems();
Random rand = new Random(System.currentTimeMillis()); // would make this static to the class
List subsetList = new ArrayList(5);
for (int i = 0; i < 5; i++) {
// be sure to use Vector.remove() or you may get the same item twice
subsetList.add(itemsVector.remove(rand.nextInt(itemsVector.size())));
}
Toutes les suggestions sur les meilleures façons de tirer un sous-ensemble aléatoire à partir d'une Collection?