Umgekehrte Durchschnittsberechnung?
Hallo,
ich versuche so gut wie möglich zu beschrieben wo das Problem liegt :D
Angenommen ich habe (zB) 40 verschiedene Zahlen. Das Ziel ist es, mit (zB) 10 dieser Zahlen auf einen spezifischen Durchschnitt zu kommen. Gibt es einen Weg (ein Programm/Code/...) bei dem ich den gewünschten "Durchschnitt" und meine verschiedenen "Ausgangszahlen" eingebe und dann die 10 Zahlen präsentiert bekomme, die diesem Durchschnitt am nähesten kommen? Soetwas ist bestimmt programmierbar, existiert soetwas schon?
2 Antworten
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
Sei D der Durchschnitt der erreicht werden soll.
Dann kannst du das Problem in das folgende Problem umformen:
Welche k (hier 10) der N (hier 40) Zahlen soll man wählen, sodass dessen Summe möglichst nah an k*D ist (Teilt man nämlich die Summe durch k erhält man den Durchschnitt)
Dieses Problem ist eine Variation vom SUBSET SUM Problem.
Eine Dafür dazu gibt es hier:
https://www.geeksforgeeks.org/subarray-whose-sum-is-closest-to-k/
(Da ist sowohl der Code in C++ als auch eine Beschreibung vom Algorithmus, jedoch müssten da Anpassungen gemacht werden, da der Algorithmus nur Angibt, welcher Durschnitt möglich ist, aber nicht welche Zahlen man dafür braucht)
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
Nach einigem Suchen habe ich dieses Video gefunden: https://www.youtube.com/watch?v=Oxt9V_qDiIA
Habe einfach eine weitere Nebenbedingung hinzugefügt die besagt, dass die Summe aller verwendeten Zaheln 10 Sein soll und es funktioniert!
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/default/user/12_nmmslarge.png?v=1551279448000)
Ist doch Wurst, du hast die Zahlen im Zähler, die kannst du beliebig verteilen und zerlegen. Notfalls die Addition davon durch 10 teilen, du hast 10 Schnipsel.
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
Du hast das Problem Falsche verstanden. Man will 10 Zahlen von 40 gegebenen Auswählen, sodass dessen Arithmetisches Mittel möglichst nahe an der gewollten Zahl ist.