【发布时间】:2021-12-26 05:29:06
【问题描述】:
我想用 Python 构建一个骰子统计模拟器。这个想法是你有一个起始数组,包含 [1,...,1] 用于最低可能的骰子掷骰,一个。我已经有一个 4d4 的例子,这很有效,所以我希望我的代码对每种组合都这样做。所以我写了变量和函数,供递归使用。但它给了我一个输出,这是不正确的而且太高了。也许有人可以帮助我,如果你需要解释,那么你可以问。
sides = 4
rolls = 4
constant = sides**rolls
beginningtable = []
for i in range(rolls):
beginningtable.append(1)
values = {rolls : 0}
check = True
print("-------------")
def checking(valuetable):
print(valuetable)
sum = 0
checker = 0
for i in valuetable:
sum = sum + i
for i in values.keys():
if sum == i:
values[i] = values [i] + 1
checker = 1
if checker == 0:
values[sum] = 1
def gothroughindex(table, index):
checking(table)
for i in range(sides-1):
table[index] += 1
checking(table)
return table
def loop(looptable, loopcounter):
for i in range(loopcounter):
if i != (loopcounter-1):
looptable[i] = 1
else:
looptable[i] += 1
return looptable
def recursiveloop(table,counter, loopvalue):
if counter == rolls:
for i in range(rolls):
print("\ncounter == counter\n")
recursiveloop(table, counter-1, loopvalue-1)
table = loop(table, loopvalue)
elif counter == 1:
for i in range(rolls-1):
print("\ncounter == 1\n")
print(loopvalue)
gothroughindex(table, 0)
table = loop(table, loopvalue+1)
else:
for i in range(rolls):
print("\nelse\n")
print(str(loopvalue) + " here I am")
recursiveloop(table, counter-1, loopvalue-1)
gothroughindex(table, 0)
table = loop(table, loopvalue)
def mainthing(maintable):
counter = rolls
loopvalue = rolls
recursiveloop(maintable, counter, loopvalue)
"""
for i in range(rolls): #Das sind die ersten vier
for i in range(rolls): #Das sind die ersten drei
for i in range(rolls-1): #Das sind die ersten beiden
gothroughindex(maintable, 0)
maintable = loop(maintable, 2)
gothroughindex(maintable, 0)
maintable = loop(maintable, 3)
maintable = loop(maintable, 4)
"""
print("---------")
print(maintable)
print(values)
sum = 0
for i in values.keys():
sum = values[i] + sum
print(sum)
mainthing(beginningtable)
【问题讨论】:
-
我不明白你的问题....不是最低可能的滚动总是全1吗?
-
@JoranBeasley 我的算法想要计算每一个可能的掷骰子组合,你从只有一个组合开始,是的,例如2d3 --> [1,1] --> [2,1] --> [3,1] --> [1,2] --> [2,2] --> [3,2] - -> [1,3] --> [2,3] --> [3,3]
标签: python probability dice