首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据给定的ProbabilitY生成二元结果

根据给定的ProbabilitY生成二元结果
EN

Stack Overflow用户
提问于 2017-02-10 02:07:40
回答 2查看 455关注 0票数 0

我正在编写需要从给定概率或列表生成二元结果的代码。我正在查看random模块,但找不到任何可以解决问题的东西。

示例

回报130%的概率

示例

返回1或0 45%和55%的时间

EN

回答 2

Stack Overflow用户

发布于 2017-02-10 04:07:55

生成一个均匀的(0,1)随机值,检查它是否≤了所需的比例/p值,并相应地返回0或1。假设rand是一个U(0,1)生成器,伪代码将如下所示:

代码语言:javascript
复制
function bernoulli(p) {
  if rand <= p {
    return 1
  } else {
    return 0
  }
}
票数 1
EN

Stack Overflow用户

发布于 2017-02-11 11:44:03

random.choices肯定会做你想做的事情,但这可能有点过分了。如果从每个元素具有独立频率的有限集合中进行选择,则它可以生成任意长的序列。在链接的Python文档的示例部分中有一个它的用法示例:

代码语言:javascript
复制
>>> # Estimate the probability of getting 5 or more heads from 7 spins
>>> # of a biased coin that settles on heads 60% of the time.
>>> trial = lambda: choices('HT', cum_weights=(0.60, 1.00), k=7).count('H') >= 5
>>> sum(trial() for i in range(10000)) / 10000
0.4169

在该示例中,权重被指定为累积分布:

代码语言:javascript
复制
cum_weights=(0.60, 1.00)

使用单个权重的等效调用,如您的示例所示,如下所示

代码语言:javascript
复制
weights=(0.60, 0.40)

权重不需要加起来等于Q;它们将被标准化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42143897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档