我正在编写需要从给定概率或列表生成二进制结果的代码。我正在查看随机模块,但无法找到任何可以解决问题的方法。
实施例
返回1 30%的时间
实施例
返回1或0 45%和55%的时间
答案 0 :(得分:1)
生成一个统一的(0,1)随机值,检查它是否≤所需的比例/ p值,并相应地返回0或1。假设rand
是一个U(0,1)生成器,伪代码看起来像这样:
function bernoulli(p) {
if rand <= p {
return 1
} else {
return 0
}
}
答案 1 :(得分:0)
random.choices肯定会做你想要的,但它可能有点矫枉过正。如果从有限集合中选择每个元素具有独立频率,则它可以生成任意长的序列。在链接的Python文档的示例部分中有一个示例:
cum_weights=(0.60, 1.00)
在该示例中,权重被指定为累积分布:
weights=(0.60, 0.40)
使用单个权重的等效调用(如您的示例所示)将为
startActivityForResult
权重不需要加起来Q;他们将被规范化。