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

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


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

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

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ประกอบด้วย :=0
  • รวม :=0
  • สำหรับการรวมกันแต่ละตัวอักษร c ที่มีองค์ประกอบ k ทำ
    • ถ้า "a" อยู่ใน c แล้ว
      • บรรจุ :=มี + 1
    • รวม :=รวม + 1
  • ส่งคืนมี/รวม

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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