आंकड़ों में, कभी-कभी यह जानना उपयोगी होता है कि क्या दो डेटा नमूने एक ही अंतर्निहित वितरण से आते हैं। ऐसा करने का एक तरीका दो-नमूना कोलमोगोरोव-स्मिर्नोव परीक्षण का उपयोग करना है ।
आपका कार्य एक प्रोग्राम लिखना होगा जो दो बिना पढ़े हुए नॉनवेजेटिव पूर्णांक सरणियों में पढ़ता है और परीक्षण में प्रयुक्त मुख्य आँकड़ा की गणना करता है।
एक सरणी को देखते हुए Aऔर एक वास्तविक संख्या x, वितरण समारोह को परिभाषित Fद्वारा
F(A,x) = (#number of elements in A less than or equal to x)/(#number of elements in A)
दो सरणियों दिया A1और A2, परिभाषित
D(x) = |F(A1, x) - F(A2, x)|
दो-नमूना Kolmogorov-Smirnov आँकड़ा Dसभी वास्तविक पर अधिकतम मूल्य है x।
उदाहरण
A1 = [1, 2, 1, 4, 3, 6]
A2 = [3, 4, 5, 4]
फिर:
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
दो सरणियों के लिए KS-आँकड़ा 1/2, का अधिकतम मूल्य है D।
परीक्षण के मामलों
[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
नियम
- आप एक समारोह या एक पूर्ण कार्यक्रम लिख सकते हैं। इनपुट STDIN या फ़ंक्शन तर्क के माध्यम से हो सकता है, और आउटपुट STDOUT या वापसी मान के माध्यम से हो सकता है।
- आप इनपुट के लिए किसी भी अस्पष्ट सूची या स्ट्रिंग प्रारूप को मान सकते हैं, जब तक कि यह दोनों सरणियों के लिए संगत है
- इस अवसर पर कि आपकी भाषा में इसके लिए एक बेसिन है, आप इसका उपयोग नहीं कर सकते हैं।
- उत्तर को कम से कम 3 महत्वपूर्ण आंकड़ों के सही होने की आवश्यकता है
- यह कोड-गोल्फ है , इसलिए सबसे कम बाइट्स में कार्यक्रम जीत जाता है
Aनीचे की सभी प्रविष्टियाँ हैं length(A)?)