ในสถิติบางครั้งมันมีประโยชน์ที่จะทราบว่าตัวอย่างข้อมูลสองตัวอย่างมาจากการแจกแจงต้นแบบเดียวกัน วิธีหนึ่งที่จะทำเช่นนี้คือการใช้สองตัวอย่างทดสอบ Kolmogorov-Smirnov
งานของคุณคือการเขียนโปรแกรมที่อ่านในอาร์เรย์จำนวนเต็มสองตัวที่ไม่ได้ลบและคำนวณค่าสถิติหลักที่ใช้ในการทดสอบ
รับอาร์เรย์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
แคนซัส-สถิตสำหรับสองอาร์เรย์เป็นค่าสูงสุดของ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)
?)