我正在阅读关于基本概率论的文本http://www.dartmouth.edu/~chance/teaching_aids/books_articles/probability_book/amsbook.mac.pdf,作为复习,并将其作为一个教自己一些编程的机会。
我正在尝试为轮盘赌中的Labouchere投注系统编写模拟(链接pdf中的第9页第13页)。
我认为我接近正确的答案,但我无法弄清楚如何让每个连续回合的“赌注”更改。
这是我到目前为止所做的:
def Labouchere(T):
bet, mon = [4,3,2,1], 0
for t in range(0,T):
ball = random.uniform(0.0,1.0)
if ball < (18/float(38)):
mon += (bet[0] + bet[-1])
np.delete(bet, 0, 0)
np.delete(bet, -1, 0)
elif ball >= (18/float(38)):
mon -= (bet[0] + bet[-1])
np.insert(bet, 0, (bet[0]+bet[-1]))
else:
break
return mon
非常感谢任何帮助。我也试图从Steven F. Lott的书“面向对象设计中的建立技巧”中学习,但它似乎高于我迄今为止的理解水平。对于准备使用该指南的材料的建议也是非常宝贵的。
提前致谢。
答案 0 :(得分:1)
在胜诉案件中,要么:
bet = bet[1:-1] # "slice" from second to penultimate
或:
bet.pop(0) # remove first
bet.pop(-1) # remove last
在你失败的情况下:
bet.append(mon) # add to end
答案 1 :(得分:0)
您可以使用切片和追加来实现此目的。看到 Explain Python's slice notation了解更多详情。
如果用户获胜:
list = list[1:len(list)-1]
如果用户输了:
list.append(list[0] + list[len(list)-1])