Bunun ne kadar tekdüze (ya da değil) olduğunu doğrulamak için analiz yapmadım ve gerçek bir shuffle olacak şekilde ayarlanabilir, ancak ith indeksinin başlangıç dizisinden = i + 1, (k + RandNum50() + RandNum50() - 1) mod (100 - k)endeksi, kaldırma, k= 0..99?
Bu RandNum50() + RandNum50()dağılımdaki zirveyi eşit olarak "iter" .
0 endeksi (1) ilk seçimden elde edilemediğinden ve hızlı bir şekilde 0 üreten alternatif 1..50 + 1..50 ayarlaması göremediğimden, bunun belirttiğim gibi oldukça doğru olmadığından eminim. ..99.
Güncelleme
Belirttiğim sorunu düzeltmek için RandNum100, ilk kofseti rastgele başlatmak için soru yorumlarında belirtildiği gibi etkili bir şekilde kullandım .
Bu, önde önemli bir dalga ile bir dağılım üretir.
1 ile ilerlemek yerine RandNum50önce bunu artırmak için başka bir tane kullandım k. Bu benim için yeterince rastgele bir sonuç üretir, ancak yine de "gerçekten" rastgele değildir, çünkü K'yi 2'ye değiştirirseniz kolayca görülebilir.
Hatta herhangi bir K için yiyecek ve içecek VB.NET kodunu test Aslında, O (K), 6K + 2 olduğunu unutmayın.