The Wilson Interval skor adalah interval kepercayaan dari probabilitas keberhasilan, berdasarkan proporsi keberhasilan dalam satu set percobaan Bernoulli (percobaan Bernoulli adalah percobaan di mana tepatnya dua hasil yang mungkin: keberhasilan atau kegagalan ). Interval diberikan oleh rumus berikut:
Dua nilai yang diberikan oleh rumus adalah batas atas dan bawah dari interval. n S dan n F adalah jumlah keberhasilan dan kegagalan, masing-masing, dan n adalah jumlah total percobaan (setara dengan n S + n F ). z adalah parameter yang tergantung pada tingkat kepercayaan yang diinginkan. Untuk keperluan tantangan ini, z = 1,96 akan digunakan (sesuai dengan interval kepercayaan 95%) 1 .
Dengan bilangan bulat non-negatif n S dan n F , mengeluarkan batas interval skor Wilson.
Aturan
- Keluaran harus seakurat mungkin dengan nilai yang sebenarnya, dalam batas-batas implementasi floating-point bahasa Anda, mengabaikan masalah potensial apa pun karena ketidakakuratan aritmatika titik-mengambang. Jika bahasa Anda mampu aritmatika presisi sewenang-wenang, bahasa itu harus setidaknya setepat aritmetika presisi ganda IEEE 754.
- Input akan berada dalam kisaran yang dapat diwakili untuk tipe integer asli bahasa Anda, dan output akan berada dalam kisaran yang dapat diwakili untuk tipe floating-point asli bahasa Anda.
- n akan selalu positif.
- Urutan output tidak masalah.
Uji Kasus
Format: n_s, n_f => lower, upper
0, 1 => 0.0, 0.7934567085261071
1, 0 => 0.20654329147389294, 1.0
1, 1 => 0.09452865480086611, 0.905471345199134
1, 10 => 0.016231752262825982, 0.3773646254862038
10, 1 => 0.6226353745137962, 0.9837682477371741
10, 90 => 0.05522854161313612, 0.1743673043676654
90, 10 => 0.8256326956323345, 0.9447714583868639
25, 75 => 0.17545094003724265, 0.3430464637007583
75, 25 => 0.6569535362992417, 0.8245490599627573
50, 50 => 0.40382982859014716, 0.5961701714098528
0, 100 => 0.0, 0.03699480747600191
100, 0 => 0.9630051925239981, 1.0
- The
z
nilai adalah1-α/2
kuantil th dari distribusi normal standar, di manaα
adalah tingkat signifikansi. Jika Anda menginginkan interval kepercayaan 95%, tingkat signifikansi Anda adalahα=0.05
, danz
nilainya1.96
.
sumber
Jawaban:
Mathematica, 48 byte (pengkodean UTF-8)
Fungsi yang tidak disebutkan namanya mengambil dua argumen dalam urutan
n_s, n_f
dan mengembalikan pasangan bilangan real yang dipesan. Simbol tiga byte√
, yang mewakili fungsi akar kuadrat, adalah U-221A.Menggunakan fakta bahwa diawali
##
dengan angka menghasilkan produk dari dua argumen, sementara+##
menghasilkan jumlah mereka. Juga menggunakan fakta bahwa produk dan jumlah secara otomatis merangkai daftar, sehingga{-1,1}√(...)
menerapkan ± dalam rumus. Menentukan konstantas = z^2
alih-alih denganz
sendirinya juga menghemat beberapa byte. (Kebanyakan saya hanya bangga menyelamatkan satu byte dengan memperhatikan hal1.4^4
itu1.96^2
!)sumber
Perl 6 , 66 byte
Fungsi ini sebenarnya mengembalikan persimpangan-batas bawah dan atas; misalnya, jika dipanggil dengan argumen 100 dan 0, ia mengembalikan:
Ini adalah format output non-tradisional untuk sedikitnya, tetapi tidak ada format tertentu yang ditentukan, dan kedua nilai yang diperlukan ada.
sumber
05AB1E , 34 byte
Input berupa form.
[n_s, n_f]
Output berupa form
[upper, lower]
Cobalah online!
Penjelasan
sumber
Pesona Rise , 105 byte
#StillBetterThanJava
Cobalah online!
Input berupa form.
n_s n_f
Output berupa form
lower upper
dan memiliki spasi tambahanYa Tuhan yang ini berantakan. Ini versi yang belum dibuka:
Semua itu
y
untuk memperlambat IP kedua sehingga tiba diT
titik ransfer pada waktu yang tepat (yaitu kedua). Ini mendorong 3 item teratas dari satu pointer ke yang lain (setup untuk tindakan ini digambarkan di bawah).'Ä1C,
menghasilkanz
dengan membagi karakter 196 dengan 100 (dup, persegi, dup, div 2, dup, div 2 ...). Yang lain-lain hanyalah sekelompok manipulasi matematika dan tumpukan untuk mendorong nilai masa depan ke tumpukan sampai mereka diperlukan. Sebagian besar, mereka berakhir dalam urutan yang benar dan hanya sampair4s{++}
kita harus membalikkan tumpukan dan memutar semuanya untuk mendapatkan nilai yang kita inginkan di samping satu sama lain di samping satu sama lain.Mungkin ada ruang untuk perbaikan, tetapi cukup kompleks sehingga saya tidak bisa melihatnya. Heck, secara tidak sengaja membaca "z" bukannya "n" dalam rumus asli pada satu titik dan memperbaiki yang kasar.
Saya harus mengeluarkan kartu catatan dan mensimulasikan tumpukan untuk memastikan itu benar:
Setiap satu memiliki nilai pada kedua ujungnya karena berapa banyak variabel yang ada (mis. Saya akan punya satu dengan S dan satu dengan F, saya akan mem-pop keduanya, membalikkan sekitar dan menambahkan S + F yang ada di ujung yang lain ke atas tumpukan). Anda dapat melihat salah satu
sqrt(...)
kartu memilikiS
di tepi bawah.sumber
R ,
5853514941 byte-15 byte, terima kasih kepada J.Doe. -2 byte terima kasih kepada Giuseppe.
sumber
MATL ,
3837 byteInput adalah array dua angka, di salah satu format:
[25 75]
,[25, 75]
,[25; 75]
.Cobalah online! atau verifikasi semua kasus uji .
sumber
Haskell ,
70 69 6867 byteCobalah online!
sumber
APL (Dyalog Unicode) , 50 byte
Cobalah online!
Terima kasih kepada H.PWiz dan dzaima karena telah membantu.
Bagaimana:
sumber
z←1.9208⋄(z+⊣(-,+).5*⍨z×z+2×⊣×⊢÷+)÷z+z++
z
pada penggunaan paling kanan:...÷z+(z←1.908)++
untuk jumlah byte yang sama. Juga:⊣×⊢÷+
->×÷+
Python,
7967 byteOutput adalah bilangan bulat yang kompleks dengan interval yang disimpan sebagai bagian nyata / imajiner.
sumber
dc , 71 byte
Mengambil kedua input pada dua jalur terpisah pada saat pemanggilan, dan mengeluarkan pada dua baris terpisah dengan batas atas di bagian bawah dan batas bawah di atas .
Sebagai contoh:
sumber
Racket 134 byte
Tidak Disatukan:
Pengujian:
Keluaran:
sumber
Java 7, 130 byte
Golf:
Tidak Disatukan:
Cobalah online
Mengembalikan array tipe double dengan panjang 2, mungkin bisa lebih banyak golf.
sumber
> <> dengan
-v
flag, 100 byteMengharapkan input akan hadir pada stack pada awal eksekusi, dalam urutan
n_s, n_f
. Cobalah online!Apa bahasa yang bodoh untuk mencoba ini di ...
Karena> <> tidak memiliki operator eksponen atau root, akar kuadrat dihitung pada baris kedua kode menggunakan metode Babel , untuk akurasi
1e-8
- untuk setiap contoh yang saya coba, ini akurat untuk setidaknya 10 tempat desimal. Jika ini tidak cukup tepat, batas dapat dikencangkan dengan menambahkan lebih banyak:*
di baris kedua, mengacak hal-hal di sekitar untuk menjaga cermin di garis.Output dalam bentuk berikut:
sumber
Pyth, 38 byte
Input adalah sebagai daftar nilai
[n_s, n_f]
,. Keluaran adalah[upper, lower]
Coba online di sini , atau verifikasi semua uji sekaligus di sini .sumber
Jelly , 30 byte
Cobalah online!
Penjelasan
Catatan
Beberapa fitur ini lebih baru daripada tantangannya. Saya percaya sekitar waktu tantangan ini diposting,
++®¶×÷++1.96²©HH¤×®½×-,1+®H¤+³÷ç
itu Jelly valid (32 byte), kurangɗ
danØ-
.sumber
APL (NARS), 49 karakter, 98 byte
uji
sumber