Вы должны лучше определить проблему.Термин «вес» не является достаточно детерминированным и обычно просто означает, что в качестве фактора используется некоторая процедура или расчет.
Например, если вы хотите последовательно назначать элементы из очереди в n-сегменты, стремясь копределенное распределение данных в корзинах, тогда проблема становится яснее.
Тогда вы можете просто взять следующий элемент из очереди и бросить кубик таким образом, чтобы он определил корзину с данным распределением (используя пример сРаспределение A, B, C-> 3,5,2, бросьте кости с 10 сторонами и, если вы получили 1,2 или 3, поместите элемент в A, если он равен 4,5,6,7,8, поместите его вB и если это 9 или 10, поместите это в C).
Тем не менее, поймите, что я не полностью определил проблему, когда я говорю «цель для распространения», нет никакой гарантии, когда такое распространение будет достигнуто.ни то, сколько вы можете быть от этого по пути (особенно в начале процесса).
Из вашего примера кажется, что вы хотите, чтобы распределение было как можно ближенасколько это возможно для распределения, к которому вы стремитесь, для каждого обработанного элемента.
В этом случае наивным и простым усилием будет добавление элемента в корзину, что сделает новый дистрибутив наиболее близким к целевому распределению.