İstatistiklerde, bazen iki veri örneğinin aynı temel dağıtımdan gelip gelmediğini bilmek faydalıdır. Bunu yapmanın bir yolu, iki örnekli Kolmogorov-Smirnov testini kullanmaktır .
Göreviniz iki sıralanmamış negatif olmayan tamsayı dizilerini okuyan ve testte kullanılan ana istatistiği hesaplayan bir program yazmak olacaktır.
Bir dizi verilen Ave bir reel sayı x, dağılım fonksiyonunu tanımlamak Ftarafından
F(A,x) = (#number of elements in A less than or equal to x)/(#number of elements in A)
İki dizinin göz önüne alındığında A1ve A2tanımlamak
D(x) = |F(A1, x) - F(A2, x)|
İki örnek Kolmogorov-Smirnov istatistik maksimum değeridir Dtüm gerçek x.
Misal
A1 = [1, 2, 1, 4, 3, 6]
A2 = [3, 4, 5, 4]
Sonra:
D(1) = |2/6 - 0| = 1/3
D(2) = |3/6 - 0| = 1/2
D(3) = |4/6 - 1/4| = 5/12
D(4) = |5/6 - 3/4| = 1/12
D(5) = |5/6 - 4/4| = 1/6
D(6) = |6/6 - 4/4| = 0
İki dizinin KS istatistiği 1/2, maksimum değeri D.
Test senaryoları
[0] [0] -> 0.0
[0] [1] -> 1.0
[1, 2, 3, 4, 5] [2, 3, 4, 5, 6] -> 0.2
[3, 3, 3, 3, 3] [5, 4, 3, 2, 1] -> 0.4
[1, 2, 1, 4, 3, 6] [3, 4, 5, 4] -> 0.5
[8, 9, 9, 5, 5, 0, 3] [4, 9, 0, 5, 5, 0, 4, 6, 9, 10, 4, 0, 9] -> 0.175824
[2, 10, 10, 10, 1, 6, 7, 2, 10, 4, 7] [7, 7, 9, 9, 6, 6, 5, 2, 7, 2, 8] -> 0.363636
kurallar
- Bir işlev veya tam bir program yazabilirsiniz. Giriş STDIN veya işlev bağımsız değişkeni üzerinden olabilir ve çıkış STDOUT veya dönüş değeri üzerinden olabilir.
- Her iki dizide de tutarlı olduğu sürece giriş için kesin bir liste veya dize biçimi olduğunu varsayabilirsiniz.
- Dilinizin bunun için bir yerleşik olması ihtimaline karşı, onu kullanamayabilirsiniz.
- Cevapların en az 3 anlamlı rakama doğru olması gerekir
- Bu kod golf , bu yüzden en az bayttaki program kazanır
Aaşağıda length(A)mı?)