Ho una matrice di valori non negativi. Voglio costruire un array di valori con la somma di 20 in modo che siano proporzionali al primo array.Assegnare una matrice di numeri interi che compensa in modo proporzionale gli errori di arrotondamento
Questo sarebbe un problema facile, tranne che voglio che la matrice proporzionale somma esattamente a 20, compensando qualsiasi errore di arrotondamento.
Ad esempio, l'array
input = [400, 400, 0, 0, 100, 50, 50]
sarebbe cedere
output = [8, 8, 0, 0, 2, 1, 1]
sum(output) = 20
Tuttavia, molti casi stanno per avere un sacco di errori di arrotondamento, come
input = [3, 3, 3, 3, 3, 3, 18]
cede ingenuamente
output = [1, 1, 1, 1, 1, 1, 10]
sum(output) = 16 (ouch)
C'è un buon modo per ripartire l'array di output in modo che ne aggiunga fino a 20 ogni volta?
non capisco la domanda ... cosa intendi per "matrice proporzionale" – Magnus
Perché utilizzare un tipo integrale, non solo utilizzare un tipo a virgola mobile? –
@Magnus un array con valori pari a 20 e proporzionali ai valori nel primo array. C'è probabilmente un modo migliore per dirlo. – Rob