Donné:
- Un nombre naturel S .
- Une liste de N poids rationnels W qui totalisent 1.
Renvoie une liste L de N entiers non négatifs, tels que:
(1) sum(L) = S
(2) sum((S⋅W_i - L_i)^2) is minimal
En d'autres termes, rapprochez le plus possible S⋅W_i
s de nombres entiers.
Exemples:
1 [0.4 0.3 0.3] = [1 0 0]
3 [0 1 0] = [0 3 0]
4 [0.3 0.4 0.3] = [1 2 1]
5 [0.3 0.4 0.3] = [2 2 1] or [1 2 2] but not [1 3 1]
21 [0.3 0.2 0.5] = [6 4 11]
5 [0.1 0.2 0.3 0.4] = [1 1 1 2] or [0 1 2 2]
4 [0.11 0.3 0.59] = [1 1 2]
10 [0.47 0.47 0.06] = [5 5 0]
10 [0.43 0.43 0.14] = [4 4 2]
11 [0.43 0.43 0.14] = [5 5 1]
Règles:
- Vous pouvez utiliser n'importe quel format d'entrée ou simplement fournir une fonction qui accepte l'entrée comme arguments.
Contexte:
Ce problème survient lors de l'affichage de S de différents types d'articles dans différentes proportions W i en ce qui concerne les types.
Un autre exemple de ce problème est la représentation politique proportionnelle, voir le paradoxe de la répartition . Les deux derniers cas de test sont connus sous le nom de paradoxe de l'Alabama.
En tant que statisticien, j'ai reconnu ce problème comme équivalent à un problème rencontré dans l'identification des tailles d'échantillon lors de la réalisation d'un échantillon stratifié. Dans cette situation, nous voulons que la proportion de chaque strate dans l'échantillon soit égale à la proportion de chaque strate dans la population. - @tomi
round(A + B) != round(A) + round(B)
, une solution courte nécessite un aperçu de ce qui se passe ici.
L[i] - S*W[i]
carré, au lieu de la règle 2 et la règle 3. Ce serait approximatif S*W[i]
.
[0 1 2 2]
une autre solution possible pour5 [0.1 0.2 0.3 0.4]