US Census last name list'dan rastgele bir ad seçmek için bir program yazmaya çalışıyorum. Liste biçimi Ağırlıklı bir listeden rastgele bir öğe seçin
Name Weight Cumulative line
----- ----- ----- -
SMITH 1.006 1.006 1
JOHNSON 0.810 1.816 2
WILLIAMS 0.699 2.515 3
JONES 0.621 3.136 4
BROWN 0.621 3.757 5
DAVIS 0.480 4.237 6
Ben adlarının listesini tutmak için iyi olurdu hangi veri yapısı
Class Name
{
public string Name {get; set;}
public decimal Weight {get; set;}
public decimal Cumulative {get; set;}
}
gibi bir yapıya veri yüklemek varsayarsak ve ne seçmek için en iyi yol olacağını ise listeden rastgele bir isim ama isimlerin dağılımı gerçek dünya ile aynı olsun. veri yapısında bir değişiklik olup olmadığını
Ben sadece ilk 10.000 satır çalışıyor olacağız.
Ben ağırlıklı rastgelelik hakkında diğer sorulardan bazıları bakarak çalıştı ama ben koduna içinde teoriyi dönüm sorun biraz yaşıyorum. Matematik teorisi hakkında pek bir şey bilmiyorum, bu yüzden "Değişim olsun ya da olmasın" rastgele seçim olup olmadığını bilmiyorum, aynı adı bir kereden fazla göstermeyi istiyorum, ki bu hiç bir anlama gelmez.
Mağaza cumulatives. Cummulatives toplamından daha az bir Rastgele Tamsayı seçin ve bin ağacında (daha az) arayın. –
@belisarius .NET'te yerleşik herhangi bir ikili ağaç yapısı var mı yoksa bir tane yazmalı mıyım? –
@Scott: Bunun için bir dizi kullanabilirsiniz - BinarySearch, işlendiği sürece iyi çalışır ... –