在Python中查找具有n个或更少点的概率
假设我们正在玩一款独特的游戏,我们有三个值n,k和h。我们从0分开始,然后可以随机选择1到h(含)之间的数字,将获得那么多的分数。我们在得分至少为k分时停止。我们必须找出我们得到n个或更少分数的概率。在这里,任何数字都可以随机选择,并且所有结果的概率都相同。
因此,如果输入如下 n = 2, k = 2, h = 10,则输出将为0.11。
要解决此问题,我们将按照以下步骤进行 –
- 定义函数dp()。这将采取路径。
- 如果路径与k-1相同,则
- 返回(n – k + 1和h的最小值)/ h
- 如果路径>n,则
- 返回0
- 如果路径> = k,则
- 返回1
- 返回dp(path + 1)-(dp(path + h + 1)- dp(path + 1))/ h
- 如果路径与k-1相同,则
-
从主函数中执行以下操作 –
-
如果k为零,则
- 返回1
- 如果n
- 返回0
- 返回dp(0)
以下是更好地理解的实现 –
更多Python相关文章,请阅读:Python 教程
示例
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