Ich habe einen Vektor / ein Array von n Elementen. Ich möchte m Elemente auswählen.
Die Auswahl muss fair / deterministisch sein - ebenso viele von jedem Unterabschnitt.
Mit m = 10, n = 20 ist es einfach: Nimm einfach jedes zweite Element. Aber wie macht man das im allgemeinen Fall? Muss ich das LCD berechnen?
Sie brauchen wahrscheinlich Bresenham's Zeilenalgorithmus . Die gleichförmige Auswahl von m
elements aus n
entspricht dem Zeichnen einer Linie in m
x n
diskretem Pixelraster. Nehmen Sie x
coordinate in 0
.. n-1
und y
coordinate 0
.. m-1
an und fahren Sie fort wie beim Zeichnen einer Linie zwischen (0,0) und (n-1, m -1). Wenn sich die y
-Koordinate ändert, wählen Sie ein Element aus dem Index x
.
UPD: Aber es scheint, dass diese einfache Funktion Ihnen genügt:
%Vor%Ich arbeite an einer klinischen Anwendung und habe festgestellt, dass alle oben genannten Antworten unterschiedlich stark ausgeprägt sind. Hier ist eine andere Lösung, die auch im Kreis gut funktioniert. Das heißt, auch wenn die letzte Zahl umgeht wie bei der Arbeit mit Grad 0 ° = 360 °.
%Vor%Damit werden immer die ersten und letzten Elemente ausgewählt:
%Vor%Dies wird nur ein Maximum von n Elementen auswählen, falls m höher als n ist. Wenn Sie wirklich wollen, dass es sich gleichmäßig über das Array verteilt, selbst an den Enden, dann wäre es stattdessen das:
%Vor%Was gibt dir so etwas:
%Vor%