import random
#以序列seq中值出现的概率来随机生成某个值
def rand_pick(seq , probabilities):
x = random.uniform(0 ,1)
cumprob = 0.0
for item , item_pro in zip(seq , probabilities):
cumprob += item_pro
if x < cumprob:
break
return item
value_list = [0 , 1]
probabilities = [0.4 , 0.6]
print(rand_pick(value_list, probabilities))
zip([iterable, ...])
zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压)
a = [0 , 1]
b = [0.4 , 0.6]
zipped = zip(a , b)
输出 [(0 , 0.4),(1 , 0.6)]
unzip = zip(*zipped)
输出 [(0 , 1),(0.4 , 0.6)]