gpt4 book ai didi

python - 掷 6 面骰子到距起点 N 格有多少种可能?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:03:48 29 4
gpt4 key购买 nike

我一周前才开始使用 python,现在我被掷骰子的问题困住了。这是我 friend 昨天发给我的问题,我自己也不知道怎么解决。

Imagine you are playing a board game. You roll a 6-faced dice and move forward the same number of spaces that you rolled. If the finishing point is “n” spaces away from the starting point, please implement a program that calculates how many possible ways there are to arrive exactly at the finishing point.

所以看来我应该创建一个带有“N”参数的函数,当它达到某个点时,假设是 10,这样我们就可以看到有多少种可能性可以到达距离起点 10 个空格的位置.

我想这与“组合”有关,但我不确定应该如何用 python 对其进行编码。

拜托了,python高手们!

最佳答案

这是一种计算精确结果的方法,既不使用迭代也不使用递归:

def ways(n):
A = 3**(n+6)
M = A**6 - A**5 - A**4 - A**3 - A**2 - A - 1
return pow(A, n+6, M) % A

for i in xrange(20):
print i, '->', ways(i)

输出与https://oeis.org/A001592一致

0 -> 1
1 -> 1
2 -> 2
3 -> 4
4 -> 8
5 -> 16
6 -> 32
7 -> 63
8 -> 125
9 -> 248
10 -> 492
11 -> 976
12 -> 1936
13 -> 3840
14 -> 7617
15 -> 15109
16 -> 29970
17 -> 59448
18 -> 117920
19 -> 233904

关于python - 掷 6 面骰子到距起点 N 格有多少种可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45657365/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com