在编写程序时经常会遇到需要根据给定的权重来随机生成值的需求。这时候,我们就需要用到加权随机生成的技巧。在Python中,可以通过一些巧妙的方式来实现加权随机生成,让我们来看看吧。

首先,我们需要定义一个表示权重的列表,比如w=[0.2, 0.3, 0.5],表示生成第一个值的概率为20%,第二个值的概率为30%,第三个值的概率为50%。接下来,我们可以使用random模块中的random()函数来生成一个0到1之间的随机数r。然后,我们可以遍历权重列表,累积每个权重值,直到找到第一个大于随机数r的权重值所对应的索引。

代码示例如下:

“`python

import random

def weighted_choice(choices):

total = sum(w for c, w in choices)

r = random.uniform(0, total)

upto = 0

for c, w in choices:

if upto + w >= r:

return c

upto += w

# 使用示例

choices = [(‘foo’, 0.2), (‘bar’, 0.3), (‘baz’, 0.5)]

print(weighted_choice(choices))

“`

通过上面的代码,我们可以轻松地实现加权随机生成的功能。希望这篇文章能够帮助到你在编写Python程序时遇到加权随机生成的问题。

详情参考

了解更多有趣的事情:https://blog.ds3783.com/