from random import uniform
prob = [0.25,0.30,0.45]
def onetrial(prob):
u=uniform(0,1)
if 0 < u <= prob[0]:
return 11
if prob[0] < u <= prob[0]+prob[1]:
return 23
if prob[0]+prob[1] < u <= prob[0]+prob[1]+prob[2]:
return 39
print onetrial(prob)
我不知道如何使用一些for-loop技术来减少def中的重复部分。谢谢。For循环,在Python中重复计算
看起来像一些类型的轮盘选择..我不认为代码是不清楚,将'prob'变得更大或变化?我只是很好奇这个动机 - 谢谢 – Levon
你不需要测试'<'部分(由前面的if处理)。 –
如果您假设概率总和为1.0,则可以完全跳过最后一个“if”。如果四舍五入会导致错过最后一个条件并结束该函数,这样做也会更安全。 –