Wähle m gleichmäßig beabstandete Elemente aus einer Sequenz der Länge n

7

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?

    
j13r 26.03.2012, 14:05
quelle

5 Antworten

9

Hier ist ein kurzes Beispiel:

%Vor%

math.ceil wird verwendet, weil die ausgewählten Indizes ohne diesen Wert zu stark auf den Anfang jedes impliziten Unterabschnitts und damit auf die Liste als Ganzes gewichtet werden.

    
agf 26.03.2012, 14:22
quelle
19

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%     
hamstergene 26.03.2012 14:15
quelle
1

Benutze eine Schleife (int i = 0; i & lt; m; i ++)

Dann, um die gewünschten Indizes zu erhalten, Ceil (i * m / n).

    
Francis P 26.03.2012 14:19
quelle
0

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%     
Wilmer E. Henao 18.08.2016 16:18
quelle
0

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%     
Default picture 10.03.2018 02:42
quelle

Tags und Links