Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm ra xác suất có n hoặc ít điểm hơn trong Python


Giả sử chúng ta đang chơi một trò chơi duy nhất và chúng ta có ba giá trị n, k và h. Chúng ta bắt đầu từ 0 điểm, sau đó chúng ta có thể chọn một số ngẫu nhiên từ 1 đến h (bao gồm cả) và chúng ta sẽ nhận được nhiều điểm đó. Chúng tôi dừng lại khi chúng tôi đã ghi được tối thiểu k điểm. Chúng ta phải tìm xác suất để chúng ta có n điểm trở xuống. Ở đây, bất kỳ số nào cũng có thể được chọn ngẫu nhiên và các kết quả đều có cùng xác suất.

Vì vậy, nếu đầu vào là n =2, k =2, h =10, thì đầu ra sẽ là 0,11.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Định nghĩa một hàm dp (). Điều này sẽ dẫn đường.

    • nếu đường dẫn giống k - 1, thì

      • return (tối thiểu là n - k + 1 và h) / h

    • nếu đường dẫn> n, thì

      • trả về 0

    • nếu đường dẫn> =k, thì

      • trả lại 1

    • trả về dp (đường dẫn + 1) - (dp (đường dẫn + h + 1) - dp (đường dẫn + 1)) / h

  • Từ chức năng chính, thực hiện như sau -

  • nếu k bằng 0 thì

    • trả lại 1

  • nếu n

    • trả về 0

  • trả về dp (0)

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

class Solution:
   def solve(self, n, k, h):
      if not k: return 1
         if n < k: return 0
         def dp(path):
            if path == k− 1:
               return min((n− k + 1), h) / h
            if path > n:
               return 0
            if path >= k:
               return 1
            return dp(path + 1)− (dp(path + h + 1)− dp(path + 1)) / h
         return dp(0)
ob = Solution()
print(ob.solve(2,2,10))

Đầu vào

2,2,10

Đầu ra

0.11