(N) (mükemmel rastlantısallığını varsayarak) numpy.random.rand bir tekrarı ihtimali nedir?

oy
2

Şu an için bir kenara yalancı rasgele sayı üreteçleri ile ilgili sorunları koymak ve farz numpy.random.randüzerinde kayan nokta sayıları ayrık dağılımından mükemmel örnekleri [0, 1). Ne oran sonucunda en az iki tam özdeş kayan nokta sayıları alıyorsanız:

numpy.random.rand(n)

verilen herhangi bir değeri için n?

Matematiksel olarak, bu ilk kaç soran eşdeğer olduğunu düşünüyorum IEEE 754 tekler veya çiftler aralığında bulunmaktadır [0, 1). Sonra bir sonraki adım eşdeğer çözmek olacağını tahmin doğum günü sorunu ? Pek emin değilim. Herkes bazı bilgiler var?

Oluştur 27/11/2018 saat 18:16
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
3

Tarafından yapılan hesaplama numpy.random.randher bir elemanı için bir sayı üretir 0.<53 random bits>2 ^ 53 eşit olasılıkla çıktıların, toplam. (Tabi ki, hafıza gösterimi bir sabit nokta değildir 0.stuff, yine de kayan nokta yoktur.) Bu hesaplama, 0 ve 1 arasında en binary64 kayan nokta sayıları üretemeyen; örneğin, 1/2 ^ 60 üretemez. Sen kodunu görebilirsiniz numpy/random/mtrand/randomkit.c:

double
rk_double(rk_state *state)
{
    /* shifts : 67108864 = 0x4000000, 9007199254740992 = 0x20000000000000 */
    long a = rk_random(state) >> 5, b = rk_random(state) >> 6;
    return (a * 67108864.0 + b) / 9007199254740992.0;
}

(Not rk_randomboyutuna bakılmaksızın, 32 bit çıkış üretilir long.)

Rastgelelik mükemmel kaynağı varsayarak, yinelemelerin olasılığı numpy.random.rand(n)olan 1- (1-0 / k) '(1-1 / k)' (1-2 / k) '... (1- (N-1) / k) , burada k = 2 ^ 53. Bir kullanmak en iyisi tahminini n büyük değerleri için doğrudan bu hesaplamak yerine. (Yaklaşım da yaklaşım hatası doğrudan hesaplama birikmiş yuvarlama hata karşılaştırır biçimine bağlı olarak, daha doğru olabilir.)

Cevap 27/11/2018 saat 19:37
kaynak kullanıcı

oy
0

Bu doğum günü problemi olabilir, doğru olduğunu düşünüyorum. Ama olası seçeneklerin sayısına karar vermek gerekir. Sen kayan nokta sayılarının kesinlik karar vererek bunu. Eğer nokta sonra 2 numaralarının hassas olmasına karar verirseniz Örneğin, ardından (sıfır dahil ve 1 hariç) 100 seçenek vardır.

Eğer n numaralar varsa o zaman bir çarpışma olmaması olasılığıdır:

Burada görüntü açıklama girin

R, olası sayı ve N veri noktası verildiğinde ya da herhangi bir çarpışma olasılığı:

Burada görüntü açıklama girin

Ve çarpışma 1'dir - P.

herhangi bir sayı elde etme olasılığı 1 / R olmasıdır. Ve herhangi bir noktada, bir veri noktası, önceki veri noktalarına ile çarpışan olmayan olasılığı (R) 'dir / i veri noktasının indeksi olarak R. Ama birbirleriyle çarpışan hiçbir veri noktaları olasılığını almak için, onlarla öncesinde olanlarla çarpışan değil tüm veri noktalarını olasılıkları çoğalması gerekir. Bazı cebirsel işlemleri uyguladığımızda, yukarıdaki denklemi olsun.

(Ben LaTex bazı denklem yazılı olurdu ama burada bunu yapmak için hiçbir seçenek yoktur görünüyor)

Cevap 27/11/2018 saat 19:05
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more