我正在网站上运行n个拆分测试。我想将一个均匀分布的整数用户ID分配给一个n个存储器之一,并确定性地分配给同一用户始终进行相同的测试。

在这一点上,我只能通过n将用户ID修改来选择拆分测试列表中的索引。如果我想对某些测试进行加权怎么办?

例如,将存储桶#1/21分配了90%的时间,其余20个测试分配了0.5%的时间。

我觉得我可以以某种方式扩展列表的大小,并且仍然使用Mod技术来实现这一目标,但是在内存中有潜在的庞大,临时列表似乎很不高。

有帮助吗?

解决方案

如果大多数存储桶具有不同的尺寸,大小将大小定义为ID百分比,那么您必须以某种方式表示它。否则,您还将如何知道这些百分比?

一种要使用的解决方案是说100个虚拟存储桶,每个桶代表1%的ID。然后将90个虚拟存储桶的90与#1/21的存储桶相关联。然后,您可以执行一个mod 100,如果它落在拳头90虚拟存储桶中,请将ID分配给Bucket#1。您可以通过将每个存储桶的百分比除以 GCD 在所有百分比中,在您的示例中为0.5(GCD(90,0.5))。

从您的示例中,只有一个不同的桶大小。最好的解决方案实际上取决于您可以拥有哪些类型的安排。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top