एम समय से कम से कम n कुछ होने की संभावना


11

एक कार्यक्रम या समारोह लिखें, कि एक सफलता संभावना को देखते हुए पी , एक नंबर n और परीक्षणों के एक नंबर मीटर का मौका रिटर्न कम से कम n सफलताओं से बाहर मीटर परीक्षणों।

दशमलव के बाद आपका उत्तर कम से कम 5 अंकों के लिए सटीक होना चाहिए।

परीक्षण के मामलों:

 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

3
क्या आप हम में से उन लोगों के लिए एक सूत्र शामिल करने की परवाह करेंगे जिन्होंने द्विपद वितरण का अध्ययन नहीं किया है?
लीक नून

2
@KennyLau क्षमा करें, यह चुनौती का हिस्सा है।
orlp

जवाबों:


3

जेली , 15 14 बाइट्स

2ṗ’S<¥ÐḟCạ⁵P€S

कमांड लाइन तर्क के रूप में m , n और p (उस क्रम में) पढ़ता है। इसे ऑनलाइन आज़माएं!

ध्यान दें कि इस दृष्टिकोण के लिए ओ (2 मीटर ) समय और मेमोरी की आवश्यकता होती है , इसलिए यह परीक्षण के मामलों के लिए पर्याप्त कुशल नहीं है जहां एम = 100 है । मेरी मशीन पर, परीक्षण का मामला (एम, एन, पी) = (20, 13, 0.5) लगभग 100 सेकंड लेता है। यह ऑनलाइन दुभाषिया के लिए बहुत अधिक स्मृति की आवश्यकता है।

यह काम किस प्रकार करता है

2ṗ              Cartesian product; yield all vectors of {1, 2}^n.
  ’             Decrement, yielding all vectors of {0, 1}^n.
      Ðḟ        Filter; keep elements for which the link to the left yields False.
     ¥          Combine the two links to the left into a dyadic chain.
   S              Sum, counting the number of ones.
    <             Compare the count with n. 
        C       Complement; map z to 1 - z.
         ạ⁵     Compute the absolute difference with p.
           P€   Compute the product of each list.
             S  Compute the sum of all products.


6

आर, 32 31 बाइट्स

function(p,n,m)pbeta(p,m,1+n-m)

संपादित करें - बीटा वितरण के लिए 1 बाइट स्विचिंग (@ Sp3000 गणितज्ञ उत्तर की तर्ज पर)


3

पायथन, 57 बाइट्स

f=lambda p,n,m:m and(1-p)*f(p,n,m-1)+p*f(p,n-1,m-1)or n<1

द्विपद गुणांक के लिए पुनरावर्ती सूत्र, आधार मामले को छोड़कर m==0यह दर्शाता है कि आवश्यक सफलताओं में से शेष संख्या nगैर नकारात्मक है, साथ True/Falseके लिए1/0 । अपने घातीय पुनरावर्तन वृक्ष के कारण, यह बड़े इनपुट पर स्टॉल करता है।


बड़े मामलों के लिए इस उत्तर का परीक्षण करने के लिए, कैशिंग का उपयोग करके जोड़ें from functools import lru_cache; f = lru_cache(None)(f)
orlp

@orlp धन्यवाद, मैंने बड़े परीक्षण मामलों की पुष्टि की।
xnor


3

MATLAB, 78 71 बाइट्स

लुइस मेंडो के लिए धन्यवाद 7 बाइट्स सहेजे गए!

@(m,k,p)sum(arrayfun(@(t)prod((1:m)./[1:t 1:m-t])*p^t*(1-p)^(m-t),k:m))

ans(100,10,0.1)
0.5487

अरफुन फ़ंक्शन कोई मज़ा नहीं है, लेकिन मुझे इससे छुटकारा पाने का कोई तरीका नहीं मिला है ...



1

अजगर, 20 बाइट्स

JEKEcsmgsm<O0QKJCGCG

इसे ऑनलाइन आज़माएं!

नोट: CG एक बहुत बड़ी संख्या है जिसे दुभाषिया संभाल नहीं सकता है। इसलिए, परीक्षणों की संख्या ^ T3 से कम कर दी गई है जो एक हजार है। इसलिए, लिंक एक गलत परिणाम उत्पन्न करता है।

शुद्ध संभाव्य दृष्टिकोण का उपयोग करता है।


मुझे नहीं लगता कि एक संभावित दृष्टिकोण इस प्रश्न के लिए मान्य होगा, लेकिन हमें @orlp
Sp3000

उच्च संभावना के साथ सटीकता सी के भीतर पाने के लिए आपको 1 / c ^ 2 परीक्षणों के आदेश की आवश्यकता है, ताकि पांच दशमलव स्थानों के लिए ~ 10 ^ 10 हो।
xnor

CG एक बहुत बड़ी संख्या है। वास्तव में, यह स्ट्रिंग "एबीसी ... जेड" है जो बेस-256 से दशमलव में परिवर्तित हो गया है।
लीक नून

2
यदि "प्रोबैबिलिक" का अर्थ यादृच्छिक है, तो आप एक सटीक मूल्य की गारंटी नहीं दे सकते , चाहे आप कितने भी औसत हों। वास्तव में, परिणाम हर बार अलग होता है।
लुइस मेंडो

2
हमेशा एक नॉनजरो संभावना है कि परिणाम 5 दशमलव स्थानों के लिए सटीक नहीं है। इसलिए यह आवश्यकता को पूरा नहीं करता है आपका उत्तर कम से कम 5 अंकों के लिए सटीक होना चाहिए
लुइस मेंडो

1

जावास्क्रिप्ट (ईएस 7), 82 बाइट्स

(p,n,m)=>[...Array(++m)].reduce((r,_,i)=>r+(b=!i||b*m/i)*p**i*(1-p)**--m*(i>=n),0)

का उपयोग करके 1 बाइट बचाया reduce! स्पष्टीकरण:

(p,n,m)=>               Parameters
 [...Array(++m)].       m+1 terms
  reduce((r,_,i)=>r+    Sum
   (b=!i||b*m/i)*       Binomial coefficient
   p**i*(1-p)**--m*     Probability
   (i>=n),              Ignore first n terms
   0)




0

टीआई-बेसिक, 17 बाइट्स

10 दशमलव तक सटीक, अधिक कोड वाले 0-14 दशमलव से कहीं भी समायोजित किया जा सकता है।

Prompt P,N,M:1-binomcdf(M,P,N-1

0

हास्केल, 54 बाइट्स

(p%n)m|m<1=sum[1|n<1]|d<-m-1=(1-p)*(p%n)d+p*(p%(n-1))d

एक कार्य को परिभाषित करता है (%)। जैसे बुलाओ (%) 0.4 2 3


n <= n के बजाय 1 <।
डेमियन

0

मैथेमेटिका, 48 बाइट्स

Sum[s^k(1-s)^(#3-k)#3~Binomial~k,{k,##2}]/.s->#&

की संभावना की गणना करने के द्विपद बंटन प्रायिकता सूत्र का उपयोग करता कश्मीर के लिए सफलताओं कश्मीर से n करने के लिए मीटर । एक प्रतीकात्मक राशि का उपयोग करके किनारे के मामलों को संभालता है जहां एस संभावना के लिए एक प्रतीकात्मक चर है जो बाद में वास्तविक मूल्य पी के साथ बदल दिया जाता है । (चूँकि s 0 = 1 है, लेकिन 0 0 अनिश्चित है।)

उदाहरण

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.