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循环技术来减少def中的重复部分。谢谢。在
假设您经常调用
onetrial
,请首先计算CDF,使其更快:您可以使用bisect使其更快。在
我喜欢F.J.的回答,但我会使用元组列表,假设您可以轻松做到:
以下代码与当前代码等效,它使用for循环:
我不太清楚返回的值和概率之间的关系,对于您的代码
prob
总是有3个元素,所以我也做了这个假设。在相关问题 更多 >
编程相关推荐