在Python中为A/B测试随机生成多个testcontrol变体

2024-10-05 10:05:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用3个桶做一个A/B实验。如果我有2个bucket,我可以使用方法random.sample从所有用户中获得2组用户

from random import sample

test = sample(all_users, k=100)
control = set(all_users) - set(test)

由于我需要3组用户,下面的代码是否能确保每个用户在任一变体中都有相同的机会

NUM_USERS = int(len(all_users) * 0.33)

variant1 = sample(all_users, NUM_USERS)
variant2 = sample(set(all_users) - set(variant1), NUM_USERS) 
variant3 = set(all_users) - variant1 - variant2

Tags: sample方法用户fromtestimportbucketrandom
1条回答
网友
1楼 · 发布于 2024-10-05 10:05:01

我想会的,但因为它是代码,你可以很容易地进行经验测试。例如,您可以将代码包装成一个函数,并调用它几千次,确保每个条目在任何一个变体中都有相同的结束概率

表达这一点的另一种方式是洗牌元素,然后选择子集。例如,类似于:

from random import shuffle

# shuffle works in-place, making a copy means we don't change the callers version
elems = list(all_users)
shuffle(elems)

# round up to nearest group size
n = (len(elems) + 2) // 3

# assign users to groups
g1, g2, g3 = (
  elems[i:i+n]
  for i in range(0, len(elems), n)
)

相关问题 更多 >

    热门问题