25 EYLÜL 2008, PERŞEMBE
en iyi koleksiyonundan rastgele bir alt kümesini almak için yolu?
Bir Vektör olan rastgele bir alt kümesini (örneğin 100 adet geri dönecek; 5 rastgele pick) seçmek istiyorum nesneler kümesi var. Çok aceleci benim ilk geçişte son derece basit ve belki de aşırı zeki bir çözüm yaptım:
Vector itemsVector = getItems();
Collections.shuffle(itemsVector);
itemsVector.setSize(5);
Bu güzel ve basit olma avantajına sahip olsa da, ölçek, yani Koleksiyon.çok iyi gidiyor değil sanıyorum() karışık O olmalı(n) en az. Daha akıllıca bir seçenektir
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())));
}
Bir topluluktan rasgele bir alt ortaya çıkarmak için daha iyi yollar üzerinde herhangi bir öneriniz var mı?
CEVAP
1 NİSAN 2010, PERŞEMBE
Ben sadece Java blogumda rastgele örnekleme hakkında bir makale yayınladı. Algoritmalar burada bahsedilen, artı uygulamaları ve analizleri kapsar.
Bunu Paylaş:
Nasıl Ruby rastgele bir sayı almak içi...
Nasıl bir modül almak için tam yolu ve...
Π değerini almak için en hızlı yolu ne...
İyi bir dizinin son elemanı almak için...
Nasıl mutlak yolu göreli bir yol almak...