Wie würde ich effizient eine 1-mal-1-aufsteigende Zufallsstichprobe der Werte 1: n nehmen und sicherstellen, dass jeder der zufällig ausgewählten Werte immer höher ist als der vorherige Wert?
z.B.:
Bekommen Sie für die Werte 1: 100 eine Zufallszahl, sagen Sie, welche 61 ist. (aktuelle Liste = 61)
Wählen Sie dann eine andere Zahl zwischen 62 und 100, sagen Sie, welche 90 ist (aktuelle Liste = 61,90)
Wählen Sie dann eine andere Zahl zwischen 91 und 100, sagen Sie, welche 100 ist.
Stoppen Sie den Prozess, wenn der Maximalwert erreicht wurde (endgültige Liste = 61,90,100)
Ich bin im Loop-Land stecken geblieben und habe auf diese klobige Art gedacht:
%Vor%Ich möchte einen letzten Vektor melden, der die Verkettung von a1, a2, a (n):
ist %Vor%Obwohl das wie eine Hausaufgabenfrage klingt, ist es das nicht. Ich habe die Tage der Hausaufgaben glücklicherweise vor vielen Jahren verlassen.
Dies verwendet eine while
-Schleife und ist in eine Funktion eingepackt
Notieren Sie sich die zu bearbeitende Änderung, wenn das neue Beispiel 100 ist, und die Art, wie sample
eine Ganzzahl im Gegensatz zu einem Vektor für x
Das Lesen der Hilfe für sample
ergab die nützliche resample
Funktion. Das vermeidet die Fallstricke wenn Länge (x) == 1
Nicht besonders effizient, aber:
%Vor%Proben EDIT: Trimmen ein wenig Fett von ihm:
%Vor%