我刚刚开始像一周前的python,现在我被困在关于掷骰子的问题上.这是我朋友昨天寄给我的一个问题,我不知道如何自己解决.
想象一下,你正在玩棋盘游戏.你滚动一个6面骰子并向前移动你滚动的相同数量的空间.如果终点距离起点的"n"个空格,请执行一个程序,计算完全到达终点的可能方式.
所以看起来我将使用带有"N"的参数来创建一个函数,当它达到某个点时,让我们说10,所以我们都可以看到有多少可能性从起点开始到10个空格.
我想这与"组合"有关,但我不确定它应该如何在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)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)