SORU
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.

http://eyalsch.wordpress.com/2010/04/01/random-sample/ bkz

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Christopher Bill

    Christopher

    30 NİSAN 2009
  • guau . .

    guau . .

    25 Ocak 2008
  • movies95

    movies95

    27 Kasım 2006