Распределение суммы S по N различным операндам - PullRequest
1 голос
/ 01 июня 2009

Я пытаюсь найти способ распределить сумму S по N различным операндам (b1, b2, .., bn), где b1, b2, ... bn находятся в фиксированном соотношении, которое определяется другим набором операндов (a1, a2, .. an)

Рассмотрим ситуацию, когда:

Кандидат А получает в общей сложности Ta голосов от N округов с распределением: {a1, a2, a3 .. aN}

Кандидат B получает в общей сложности Tb голосов (Ta и Tb не связаны, что означает, что Ta < Tb, Ta = Tb и Ta > Tb все возможны) от M округов (IMP: M <= N), распространение неизвестно. </p>

Как лучше всего распределить Tb голосов по избирательным округам b1, b2, b3 .. bM таким образом, чтобы они распределялись в том же соотношении, что и a1, a2, a3 .. aN.

Некоторые случаи:

1.Ideal

Ta = 20 (8,6,4,2) Tb = 10

Тогда получим: Tb (4,3,2,1)

2. Несколько менее идеальный

Ta = 20(8 ,6, 4, 1 , 1) Tb = 10

Тогда мы получим (4, 3, 2, 1, 0), что на самом деле означает (4,3,2,1) (M

Ответы [ 2 ]

1 голос
/ 11 июня 2009

Ваш a_i отсортирован всегда? Предполагая, что это так, один из способов начать это начать присваивать b_i с первого значения a_i.

1 голос
/ 01 июня 2009

Одно простое решение:

br = ar * (Tb / Ta)

Что на самом деле не работает для сложных диапазонов или для несовпадающих Ta и Tb

Как, Та = 22 (5, 5, 4, 2, 1, 1, 1, 1, 1, 1) и Tb = 7

UPDATE: Я следовал следующим правилам, чтобы найти лучшее решение:

  1. Сохраняйте соотношение как (Tb / Ta) и продолжайте распределять, пока не закончится.
  2. Всякий раз, когда вы округляете, округляйте вверх, то есть 3.24 -> 4 и 3.68, также -> 4
  3. например. Здесь: b1 = 5 * 7/22 => 2, b2 = 5 * 7/22 = 2, b3 = 4 * 7/22 = 2, b4 = 1 (поскольку остается только один)

Итак, мы имеем Tb = 7 (2,2,2,1), что ближе всего к (5, 5, 4, 2)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...