找出Python中具有n个或更少点的可能性的程序

假设我们正在玩一个独特的游戏,并且我们有三个值n,k和h。我们从0点开始,然后我们可以从1到h(包括1和h)之间随机选择一个数字,然后得到那么多点。当我们获得至少k分时,我们将停止。我们必须找到n点或更少点的概率。在这里,可以随机选择任何数量,并且结果都有相同的概率。

因此,如果输入类似于n = 2,k = 2,h = 10,则输出将为0.11。

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个功能dp()。这将走道路。

    • 返回1

    • 返回0

    • 返回(n − k + 1和h的最小值)/ h

    • 如果路径与k − 1相同,则

    • 如果path> n,则

    • 如果路径> = k,则

    • 返回dp(path +1)-(dp(path + h +1)-dp(path +1))/ h

    • 在主要功能中,执行以下操作-

    • 如果k为零,则

      • 返回1

    • 如果n <k

      • 返回0

    • 返回dp

    让我们看下面的实现以更好地理解-

    示例

    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))

    输入值

    2,2,10
    输出结果
    0.11