【问题标题】:Generating multiple test-control variants randomly for A/B testing in Python在 Python 中为 A/B 测试随机生成多个测试控制变体
【发布时间】:2020-12-27 14:31:26
【问题描述】:

我想用 3 个存储桶执行 A/B 实验。如果我有 2 个桶,我可以使用 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

【问题讨论】:

    标签: python python-3.x random sample


    【解决方案1】:

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

    另一种表达方式是对元素进行洗牌,然后选择子集。例如,类似:

    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)
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      相关资源
      最近更新 更多