Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาความน่าจะเป็นได้ตัวอักษร 'a' ในการจับคู่ k ตัวใน Python

สมมติว่าเรามีอาเรย์ที่มีตัวอักษรภาษาอังกฤษ n ตัวที่ต่างกัน เรายังมีค่า k อีกตัว เราสามารถเลือกดัชนี k ตัวที่ต่างกัน (1-indexed) ด้วยการกระจายแบบสม่ำเสมอ เราต้องหาความน่าจะเป็นที่ดัชนีที่เลือกอย่างน้อยหนึ่งดัชนีจะมีตัวอักษร 'a'

ตัวอย่างเช่น หาก letters = ['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z'] และ k = 2 ผลลัพธ์จะเป็น 64.28% มีการจับคู่แบบ (1,2), (1,3) รวม 28 แบบ แต่มี 18 คู่ที่มี 'a' ดังนั้น 18/28 = 0.6428

ขั้นตอนการแก้ปัญหา

  • contain := 0
  • total := 0
  • สำหรับแต่ละการจับคู่ c ของ letters ขนาด k:
    • ถ้า "a" อยู่ใน c: contain := contain + 1
    • total := total + 1
  • คืนค่า contain/total

ตัวอย่างโค้ด

from itertools import combinations

def solve(letters, k):
    contain = 0
    total = 0
    for c in combinations(letters, k):
        if "a" in c:
            contain += 1
        total += 1
    return contain/total

letters = ['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z']
k = 2
print(solve(letters, k))

อินพุต

['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z'], 2

เอาต์พุต

0.6428571428571429