Я выполняю n раздельных тестов на веб-сайте. Я хочу назначить равномерно распределенный целочисленный идентификатор пользователя одному из n ведер и детерминированно, чтобы один и тот же пользователь всегда получал один и тот же тест.Детерминистически присваивать идентификатор в списке взвешенных ведер
На данный момент я могу просто выбрать индекс в списке тестов split, изменив идентификатор пользователя на n. Что делать, если я хочу весить определенные тесты?
Например, ведро №1/21 назначается 90% времени, а оставшиеся 20 испытаний назначаются на 0,5% времени.
Я чувствую, что могу как-то увеличить размер моего списка и по-прежнему использовать технику мод для достижения этого, но наличие потенциально огромных временных списков в памяти кажется неэлегантным.
Чтобы уточнить, оптимальное количество виртуальных ведер - это СУМ каждого процента ведра, деленная на GCD. Я смог наименовать это в Python наивно со списком, который растет до оптимального числа. Мне интересно, можно ли это сделать с меньшим объемом памяти, например, только записями диапазонов номеров, где упадут ведра, что будет выглядеть как выбранный ответ здесь http://stackoverflow.com/questions/2140787/select-random- K-элементы из-а-списка-чей-элементы имеют-весы. Если бы вы могли публиковать псевдокод, это было бы здорово. В противном случае я отправлю свое решение в ближайшее время. – Bluu
Кроме того, не могли бы вы уточнить, что вы имеете в виду под одним отдельным размером ведра? Какие еще существуют меры? – Bluu
@Bluu Что касается различных размеров ковша, то ваш пример был 1x90% + 20x0.5%. 90% ковш - единственный, который отличается от остальных. – marcog