我有一个名为 users 的 id 列表,想将它们按 80:20 的百分比随机分为两组。
例如,我有一个包含 100 个用户 ID 的列表,并随机将 80 个用户放入 group1,将剩余 20 个用户放入 group2
def getLevelForIncrementality(Object[] args) {
try {
if (args.length >= 1 && args[0]!="") {
String seed = args[0] + "Testing";
int rnd = Math.abs(seed.hashCode() % 100);
return (rnd >= 80 ? 2 : 1);
}
} catch (Exception e) { }
return 3;
}
Run Code Online (Sandbox Code Playgroud)
我从上面的常规代码中尝试过,它给出的比例为 82:18。
有人可以给我一些见解、建议或算法来解决数百万用户 ID 的上述问题吗?
您可以使用random.sample随机提取所需数量的元素:
import random
a = list(range(1000))
b = random.sample(a, int(len(a) * 0.8))
len(b)
Run Code Online (Sandbox Code Playgroud)
800
如果您有唯一的 ID,您可以尝试将这些 ID 列表转换为集合,并像这样区分它们:
c = list(set(a) - set(b))
Run Code Online (Sandbox Code Playgroud)