假设我有一个三万人的名单。我想从一套8种可能的水果中挑选4次。然而,我希望任何名字选择任何水果的概率是20%。我该怎么做呢?
作为一个例子:包含30,000个名称的列表:
我希望约翰选择苹果,香蕉,橘子,苹果香蕉,橘子,香蕉或者蜻蜓,西瓜,葡萄,或者猕猴桃的概率是20%。
换句话说,我希望80%的名字没有选择匹配的水果,20%的名字有一对匹配的水果。
发布于 2021-03-12 08:40:24
您可以在这里轻松地使用拒绝抽样。
对每个人来说,决定他们是在20%还是80%。如果你想要样本的20%,在开始的时候随机选择6000人。
如果他们在20%,反复为他们选择4个水果从你的一套8,直到他们包含一个重复的水果。
如果他们在80%,反复为他们选择4个水果从你的一套8,直到他们不包含一个重复。
下面是一些生成30个示例(而不是30000用于演示)的python代码,其中20%包含重复的水果:
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))https://stackoverflow.com/questions/66594509
复制相似问题