SORU
10 NİSAN 2009, Cuma


Matematik.Rastgele versus. () rastgele nextİnt(int)

n bir tamsayı ise Math.random() * n Random.nextInt(n) arasındaki fark nedir?

CEVAP
10 NİSAN 2009, Cuma


Burada "Random.nextInt(n) hem" Güneş forum sonrası Gili bağlı:. Math.random() * n daha verimli ve daha az önyargılı neden the detailed explanation

Matematik.() rastgele Rastgele kullanır.() nextDouble içten.

Rastgele.() nextDouble Rastgele kullanır.() bir sonraki düzgün 1-(2^-53)aralığında 0 dağıtılır çok düzgün onun mantis bit dağıtılmış, yaklaşık olarak bir çift oluşturmak için iki kez.

Rastgele.nextİnt(n) Rastgele kullanır.sonraki() en az iki kez ortalama kullandığı bir kez, ve eğer değer alınır yukarıdaki en çok n altında MAX_İNT çalışır yine, aksi takdirde değer mod n (bu engeller yukarıdaki değerler en çok n altında MAX_İNT eğme dağıtım), bu yüzden geri dönen bir değer olan birörnek dağıtılmış aralığı 0-n-1.

Ölçekleme önce 6, Matematik çıktı.() rasgele 2^53 olası değerleri düzgün bir dağıtım çekilen biridir.

Ölçekleme tarafından 6 değiştirmez sayısı mümkün değerler ve döküm için bir int sonra güçleri bu değerler bir altı 'kova' (0, 1, 2, 3, 4, 5), her bir bölüm ilgili aralıkları kapsayan ya 1501199875790165 veya 1501199875790166 olası değerleri (6 değil bir disvisor 2^53). Bu zar yeterli sayıda (ya da iki yeterince büyük bir sayı ile ölmek, ölmek, kendini daha büyük kovalar karşı önyargılı olmak olduğunu gösterir.

Çok uzun bir süre bu etki için zar göstermek için haddeleme bekliyor olacak.

Matematik.() rasgele de iki kez hakkında işlem gerektirir ve senkronizasyon tabidir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • krotoflik

    krotoflik

    26 ŞUBAT 2011
  • SHAYTARDS

    SHAYTARDS

    1 EKİM 2008
  • Stanislav Petrov

    Stanislav Pe

    7 ŞUBAT 2009