Bunu yapmanın kolay yolu rastgele bir sayı nereye gitmeli için 'bantlar' sağlamak olacaktır. Eğer olabilir böylece örnekte, 15 oyuncu var:
rand < 1/15, highest strength
1/15 < rand < 3/15, second highest
3/15 < rand < 6/15, third highest
6/15 < rand < 10/15, fourth highest
10/15 < rand < 15/15, lowest strength
Ayrıca sonraki en yüksek içine toplamıştır duyacağız bandı dolu olduğunda ve bu (ayrı alt gruptan, sonraki en düşük mevcut bant içine toplamıştır edilmektedir izin, her grubun bir 'max' numarası ile böyle bir işlevi parametreleştirilmesi olabilir ) rasgele bir dağılımı ile, her biri sadece belirli sayıda sağlamak.
Benim yorumlardan ekleme edit:
Bir kayan aralık piramit yapısı almak için en iyi fonksiyon büyük olasılıkla bir logaritma olacaktır. Formülü:
11 - log10(rand)
Böyle aralıkları verecek gibi (log10 tabanına 10 ile bir logaritma olmak) ile çalışacak:
1 < rand < 10 = 9 < strength < 10
10 < rand < 100 = 8 < strength < 9
100 < rand < 1000 = 7 < strength < 8
etc.
ama rand rastgele bir sürü (en rastgele jeneratörler yönetebilirsiniz daha fazla) gerektirecek 1'den 10 ^ 10 arasında gerekir. Birlikte bazı çarpma olabilir aralık bu tür rastgele bir sayı elde etmek. 3 rasgele sayılar yönetmek olabilir:
11 - log10(rand1 * rand2 * rand3)
rand1 aralığı 1-10000 ve rand2 olan ve aralık 1-1000 sahip rand3 ile. Bu uzak biraz (ben inanıyorum merkezinde numaraları olması daha muhtemeldir) olsa doğru bir piramit dağılımını eğmek olur bu yüzden uygun olmayabilir.