将用户按照 80:20 的比例随机分为两组

che*_*thi 2 python

我有一个名为 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 的上述问题吗?

vur*_*mux 5

您可以使用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)