gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 21:54:44 26 4
gpt4 key购买 nike

我想编写一个函数来计算 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组,然后将其余所有作为treatment组。

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

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

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com