首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择相同元素的概率

选择相同元素的概率
EN

Stack Overflow用户
提问于 2021-03-12 05:09:09
回答 1查看 144关注 0票数 0

假设我有一个三万人的名单。我想从一套8种可能的水果中挑选4次。然而,我希望任何名字选择任何水果的概率是20%。我该怎么做呢?

作为一个例子:包含30,000个名称的列表:

  • 苹果
  • 香蕉
  • 桔黄色的
  • 葡萄
  • 奇异果
  • 凤梨
  • 西瓜
  • 蜻蜓

我希望约翰选择苹果,香蕉,橘子,苹果香蕉,橘子,香蕉或者蜻蜓,西瓜,葡萄,或者猕猴桃的概率是20%。

换句话说,我希望80%的名字没有选择匹配的水果,20%的名字有一对匹配的水果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-12 08:40:24

您可以在这里轻松地使用拒绝抽样

对每个人来说,决定他们是在20%还是80%。如果你想要样本的20%,在开始的时候随机选择6000人。

如果他们在20%,反复为他们选择4个水果从你的一套8,直到他们包含一个重复的水果。

如果他们在80%,反复为他们选择4个水果从你的一套8,直到他们不包含一个重复。

下面是一些生成30个示例(而不是30000用于演示)的python代码,其中20%包含重复的水果:

代码语言:javascript
复制
import random

N = 30

fruits = 'Apple Banana Orange Grape Kiwi Pineapple Watermelon Dragonfruit'.split()

def sample(repeats):
    while True:
        s = [random.choice(fruits) for _ in range(4)]
        if len(set(s)) == 4 - repeats:
            return s


population = list(range(N))
twenty_percenters = set(random.sample(population, N // 5))

for p in population:
    in20 = p in twenty_percenters
    print(p, '*' * in20, sample(in20))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66594509

复制
相关文章

相似问题

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