Tulis sebuah program atau fungsi, yang diberi probabilitas keberhasilan p , angka n dan sejumlah percobaan m mengembalikan peluang setidaknya n keberhasilan keluar dari percobaan m .
Jawaban Anda harus tepat setidaknya 5 digit setelah desimal.
Kasus uji:
0.1, 10, 100 -> 0.54871
0.2, 10, 100 -> 0.99767
0.5, 13, 20 -> 0.13159
0.5, 4, 4 -> 0.06250
0.45, 50, 100 -> 0.18273
0.4, 50, 100 -> 0.02710
1, 1, 2 -> 1.00000
1, 2, 1 -> 0.00000
0, 0, 1 -> 1.00000
0, 0, 0 -> 1.00000
0, 1, 1 -> 0.00000
1, 1, 0 -> 0.00000
Jawaban:
Jelly ,
1514 byteMembaca m , n dan p (dalam urutan itu) sebagai argumen baris perintah. Cobalah online!
Perhatikan bahwa pendekatan ini membutuhkan waktu dan memori O (2 m ) , sehingga tidak cukup efisien untuk kasus uji di mana m = 100 . Di komputer saya, kotak uji (m, n, p) = (20, 13, 0,5) kira-kira membutuhkan 100 detik. Ini membutuhkan terlalu banyak memori untuk penerjemah online.
Bagaimana itu bekerja
sumber
Mathematica, 29 byte
Mengambil input dalam urutan
n,m,p
. Mathematica sangat bagus, bahkan golf kode Anda untuk Anda:BetaRegularized
adalah fungsi beta tidak lengkap yang diatur .sumber
R,
3231 bytesunting - 1 byte beralih ke distribusi beta (sepanjang baris @ Sp3000 Mathematica Answer)
sumber
Python, 57 byte
Rumus rekursif untuk koefisien binomial, kecuali kasus dasar
m==0
menunjukkan apakah jumlah sisa keberhasilan yang diperlukann
adalah negatif, denganTrue/False
untuk1/0
. Karena pohon rekursi eksponensial, ini berhenti pada input besar.sumber
from functools import lru_cache; f = lru_cache(None)(f)
.Haskell, 73 byte
sumber
MATLAB,
7871 byteDisimpan 7 byte berkat Luis Mendo!
Fungsi arrayfun tidak menyenangkan, tapi saya belum menemukan cara untuk menghilangkannya ...
sumber
Pyth, 26 byte
Cobalah online!
Menggunakan distribusi binomial kumulatif standar.
sumber
Pyth, 20 byte
Cobalah online!
Catatan: CG adalah angka yang sangat besar yang tidak bisa ditangani oleh penerjemah. Oleh karena itu, jumlah percobaan telah diturunkan menjadi ^ T3 yaitu seribu. Karenanya, tautan menghasilkan hasil yang tidak akurat.
Menggunakan pendekatan probabilistik murni.
sumber
JavaScript (ES7), 82 byte
Disimpan 1 byte dengan menggunakan
reduce
! Penjelasan:sumber
Oktaf, 26 byte
Ini adalah fungsi anonim. Untuk menggunakannya, tetapkan ke variabel.
Coba di sini .
sumber
MATL , 23 byte
Input dalam urutan
m
,n
,p
.Cobalah online!
Ini melakukan perhitungan langsung dengan menjumlahkan istilah dari
n
hinggam
fungsi probabilitas (massa) binomial .sumber
Jelly ,
1817 byteMembaca n , m dan p (dalam urutan itu) sebagai argumen baris perintah. Cobalah online!
sumber
TI-Basic, 17 byte
Tepat hingga 10 desimal, dapat disesuaikan di mana saja dari 0-14 desimal dengan lebih banyak kode.
sumber
Haskell, 54 byte
Menentukan fungsi
(%)
. Sebut saja seperti(%) 0.4 2 3
.sumber
Mathematica, 48 byte
Menggunakan binomial rumus probabilitas distribusi untuk menghitung peluang k keberhasilan untuk k dari n ke m . Menangani kasus tepi dengan menggunakan jumlah simbolik di mana s adalah variabel simbolik untuk probabilitas yang kemudian diganti dengan nilai aktual p . (Karena s 0 = 1 tetapi 0 0 tidak dapat ditentukan.)
sumber