Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में दी गई शर्त से इंडिकेटर रैंडम वेरिएबल से फंक्शन की गणना करने का प्रोग्राम


मान लीजिए हमारे पास दो मान k और n हैं। पहले n प्राकृतिक संख्याओं 1, 2, ..., n के एक रैंडम क्रमपरिवर्तन p1, p2, ..., pn पर विचार करें और मान F की गणना करें, जैसे कि F = (X2+...+Xn-1)^k, जहां Xi एक इंडिकेटर रैंडम वेरिएबल है, जो तब 1 होता है जब निम्न दो शर्तों में से कोई एक होती है: pi-1 < pi > pi+1 या pi-1 > pi < pi+1 और Xi अन्यथा 0 होता है। हमें F का अपेक्षित मान ढूंढना है।

उदाहरण के लिए, यदि इनपुट k = 1 n = 1000 है, तो आउटपुट 1996/3 होगा।

समाधान दृष्टिकोण

इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:

  • exp_factor() नामक एक फंक्शन परिभाषित करें। यह n, k लेगा
    • यदि k, 1 के समान है, तो
      • (2*(n-2), 3) लौटाएं
    • अन्यथा जब k, 2 के समान है, तो
      • (40*n^2 -144*n + 131, 90) लौटाएं
    • अन्यथा जब k, 3 के समान है, तो
      • (280*n^3 - 1344*n^2 +2063*n -1038, 945) लौटाएं
    • अन्यथा जब k, 4 के समान है, तो
      • (2800*n^4 - 15680*n^3 + 28844*n^2 - 19288*n + 4263, 14175) लौटाएं
    • अन्यथा जब k, 5 के समान है, तो
      • (12320*n^5 - 73920*n^4 + 130328*n^3 - 29568*n^2 - 64150*n -5124, 93555) लौटाएं
    • 1.0 लौटाएं
  • मुख्य विधि से, निम्न करें:
    • M := n-2
    • p := 2.0/3
    • q := 1 - p
    • (num, den) := exp_factor(n, k)
    • g := gcd(num, den)
    • भिन्न (num/g) / (den/g) लौटाएं

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

from math import gcd

def exp_factor(n,k):
    if k == 1:
        return (2*(n-2),3)
    elif k == 2:
        return (40*n**2 -144*n + 131,90)
    elif k == 3:
        return (280*n**3 - 1344*n**2 +2063*n -1038,945)
    elif k == 4:
        return (2800*n**4 - 15680*n**3 + 28844*n**2 - 19288*n + 4263, 14175)
    elif k == 5:
        return (12320*n**5 - 73920*n**4 + 130328*n**3 - 29568*n**2 - 64150*n -5124, 93555)
    return 1.0

def solve(k, n):
    M = n-2
    p = 2.0/3
    q = 1 - p
    num, den = exp_factor(n,k)
    g = gcd(num, den)
    return str(int(num/g))+'/'+str(int(den/g))

k = 1
n = 1000
print(solve(k, n))

इनपुट

1, 1000

आउटपुट

1996/3
  1. - पायथन प्रोग्राम: दी गई स्ट्रिंग के पर्म्युटेशन के लिए इनबिल्ट फंक्शन

    स्ट्रिंग दी गई है। हमारा कार्य दी गई स्ट्रिंग के पर्म्युटेशन प्रदर्शित करना है। यहां इस समस्या को पायथन में इनबिल्ट फंक्शन permutations(iterable) का उपयोग करके हल करते हैं।उदाहरणInput: string = XYZ Output: XYZ XZY YXZ YZX ZXY ZYXएल्गोरिदमचरण 1: दी गई स्ट्रिंग। चरण 2: स्ट्रिंग के सभी पर्म्युटेशन प्रा

  1. - श्रृंखला n+nm+nmm...+n(m बार) की गणना के लिए पायथन प्रोग्राम

    समस्या विवरण यहां n दिया गया मान है जो धनात्मक संख्या है, m वह संख्या है जितनी बार श्रृंखला चलती है। हमारा कार्य इस श्रृंखला की गणना करना है। एल्गोरिदम n, m इनपुट करें। संख्या को स्ट्रिंग में बदलें। परिणाम को संख्या और स्ट्रिंग के रूप में आरंभ करें। शेष पद जोड़ें। स्ट्रिंग को जोड़कर n, nn, nnn...

  1. - दी गई स्थिति से 'k' बिट्स निकालने का पायथन प्रोग्राम

    समस्या विवरण यह फंक्शन pos स्थिति से k बिट्स निकालने के लिए उपयोग किया जाता है और निकाले गए मान को लौटाता है। यहां हम पायथन स्लाइसिंग तकनीक का उपयोग करते हैं। उदाहरण इनपुट:: संख्या=170 K=5 Pos=2 आउटपुट=21 एल्गोरिदम सबसे पहले संख्या को bin() का उपयोग करके बाइनरी रूप में बदलें। पहले दो वर्ण हटाएं।