1

Web サイトで n 個の分割テストを実行しています。均等に分散された整数のユーザー ID を n 個のバケットの 1 つに割り当て、決定論的に同じユーザーが常に同じテストを受けるようにしたいと考えています。

この時点で、ユーザー ID を n で変更することにより、分割テストのリストからインデックスを選択できます。特定のテストに重みを付けたい場合はどうすればよいですか?

たとえば、バケット #1/21 は 90% の確率で割り当てられ、残りの 20 個のテストは 0.5% の確率で割り当てられます。

どういうわけかリストのサイズを拡大し、これを達成するために mod テクニックを使用できるように感じますが、潜在的に巨大な一時的なリストをメモリに保持するのはエレガントではないようです。

4

1 に答える 1

4

ほとんどのバケットに個別のサイズがあり、サイズが ID のパーセンテージとして定義されている場合、何らかの方法でこれをメモリ内で表現する必要があります。そうでなければ、これらのパーセンテージを他にどのように知ることができますか?

使用する 1 つの解決策は、それぞれが ID の 1% を表す 100 個の仮想バケットを用意することです。次に、90 個の仮想バケットをバケット #1/21 に関連付けます。次に mod 100 を実行し、最初の 90 個の仮想バケットに該当する場合は、ID をバケット #1 に割り当てます。各バケットのパーセンテージをすべてのパーセンテージのGCD (この例では 0.5 (GCD(90, 0.5))) で割ることにより、仮想バケットの最適な数を取得できます。

あなたの例から、ただし、1 つの異なるバケット サイズしかありません。最善の解決策は、どのような取り決めを行うかによって異なります。

于 2010-12-22T23:41:29.833 に答える