কম্পিউটার টিউটোরিয়াল

পাইথনে ইন্ডিকেটর র‍্যান্ডম ভেরিয়েবল থেকে ফাংশন ক্যালকুলেট করার প্রোগ্রাম

ধরুন আমাদের দুটি ভ্যালু k এবং n আছে। প্রথম nটি প্রাকৃতিক সংখ্যা 1, 2, ..., n এর একটি র‍্যান্ডম পারমুটেশন p1, p2, ..., pn বিবেচনা করুন এবং F এর মান ক্যালকুলেট করুন, যাতে F = (X2+...+Xn-1)^k, যেখানে Xi একটি ইন্ডিকেটর র‍্যান্ডম ভেরিয়েবল, যা ১ হবে যখন নিচের দুটি শর্তের যেকোনো একটি মেনে চলবে: pi-1 < pi > pi+1 অথবা pi-1 > pi < pi+1 এবং অন্যথায় ০। আমাদের 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. পাইথন প্রোগ্রাম: স্ট্রিং-এর পারমুটেশন ইনবিল্ট ফাংশন দিয়ে (Duplicate)

  2. পাইথনে n+nm+nmm...+n(m বার) সিরিজের যোগফল বের করার প্রোগ্রাম

  3. পাইথনে বাক্য থেকে ডুপ্লিকেট শব্দ সরিয়ে ফেলার প্রোগ্রাম

  4. পাইথনে দেওয়া পজিশন থেকে 'k' বিট এক্সট্রাক্ট করার প্রোগ্রাম