python - 2n 个用户的所有可能的分配向量

标签 python

我想编写一个函数来计算 2n 个用户的所有可能分配向量,其中 n 个用户分配到组 0(控制),n 个用户分配到组 1(治疗)。

我尝试了一种递归方法,如下所示,但我知道它不能像这样工作(我认为我应该有 C(2n,n) 向量,对吧?)

有什么想法吗?

谢谢。

def algo(n):
   T = list();
   if n>=2 :
      for j in range(len(algo(n-1))/2):
         T.append([0,1]+algo(n-1)[j]);
      for j in range(len(algo(n-1))/2):
         T.append([1,0]+algo(n-1)[j]);
      for j in (len(algo(n-1)/2):(len(algo(n-1)*(3/4)):
         T.append([0,0]+algo(n-1)[j]);    
      for j in range(len(algo(n-1))):
         T.append([1,1]+algo(n-1)[j]);
   if n==1 :
      T=[[0,1],[1,0],[0,0],[1,1]];
   return T

最佳答案

import itertools

def split_users(users_list):
    users = set(users_list)
    for comb in itertools.combinations(users, int(len(users)/2)):
        control = set(comb)
        treatment = users - control
        yield control, treatment

users = {"A", "B", "C", "D", "E", "F"}

for control, treatment in split_users(users):
    print "Control", control, "treatment", treatment

用两个词来说:split_users是一个生成器函数,它从用户列表中获取count_of_users/2元素的所有可能组合,并将它们分配给control 组,然后将其余所有视为 治疗 组。

引用set , itertoolsyield有关详细信息的文档。

另外,请注意,无论您所说的“用户”是什么意思,都需要是可哈希的。因此,如果用户表示为自定义类,则需要定义 __hash____eq__功能。

关于python - 2n 个用户的所有可能的分配向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23779576/

相关文章:

python - 用于说明温度的色标,Python 脚本

python - PyTorch:传递 numpy 数组以进行权重初始化

python - 集群上多处理模块的行为

python - 将列添加到变量列表

python - 如何创建与其他对象相同的类的新实例?

python - 如何计算 pandas 数据框中的标准差?

python - 在 python 中添加额外的列以输出 csv 文件

python - 添加一列作为具有条件的其他列的总和

python - 如何开始使用大数据分析

python - Scrapy 跟踪所有链接并获取状态