SORU
5 HAZİRAN 2010, CUMARTESİ


Kaç çift sayı 0.0 ve 1.0 arasında var mı?

Bu yıllardır aklımı kurcalayan bir şey, ama ben daha önce hiç sormak için zaman aldı.

(Sözde) çok sayıda rasgele sayı üreteci 0.0 ile 1.0 arasında rastgele bir sayı üretmek. Matematiksel olarak bu aralıkta sonsuz sayı vardır, ama double kayan nokta sayısıdır, ve bu nedenle sonlu bir hassasiyeti vardır.

O zaman sorular şöyle:

  1. double kaç sayı 0.0 ve 1.0 arasında var mı?
  2. 1 ve 2 arasında çok sayı vardır? Arasında 100 ve 101? 10^100 arasında ve 10^100 1?

Not: Eğer bir önemi varsa, özellikle double Java tanımı ilgileniyorum.

CEVAP
5 HAZİRAN 2010, CUMARTESİ


Java doubles IEEE-754 biçim, bu nedenle, onlar 52 bit kısmını; arasında herhangi iki bitişik güçlerin iki (dahil) ve özel bir sonrakine), orada olacak bu nedenle 2 52th güç farklı doubles (yani, 4503599627370496 onları). Örneğin, 0.5 ve 1.0 dahil dışlanan arasında doublefarklı s sayısı, ve pek çok da dahil arasında 1.0 ve 2.0 dışlanan ve benzeri yalan.

Sayım doubles 0.0 ve 1.0 arasında ise daha sert yapıyor yani güçler arasında iki, çünkü birçok güç var iki dahil bu aralık, ve, aynı zamanda, bir alır içine dikenli konularda normal dışı sayıları. 10 11 bit üs kapak aralığında soru, bu yüzden de dahil olmak üzere normal dışı sayıları (ve sanırım bir kaç çeşit NaN) daha iyi mi olurdu 1024 kez doubles olarak yatıyordu arasında güçlerin iki, en fazla 2**62 toplam zaten. Normal dışı &c hariç, kat sayısı 2**52 1023 olacağına inanıyorum.

Rasgele bir aralığı için" üst sınır olamaz tam double (iki güç tam katı olmamak) olarak temsil edilmesi. çünkü bu daha da zordur "100 100.1 gibi Olarak kullanışlı bir yaklaşım, bu yana ilerleme arasında güçlerin iki doğrusal, çok doğru söyledi aralığı 0.1 / 64th yayılımı arasındaki kuşatan güçlerin iki (64 ve 128), bu yüzden pek bir şey kalmamış

(0.1 / 64) * 2**52

ayrı doubles veya bir al gülüm ver 7036874417766.4004... gelir -- ya da iki;-).

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GALERNAYA20

    GALERNAYA20

    19 NİSAN 2011
  • martin shervington

    martin sherv

    7 EKİM 2011
  • UCBerkeley

    UCBerkeley

    3 Mayıs 2006