You probably need Bresenham's line algorithm. Choosing m
elements uniformly from n
is equivalent to drawing a line in m
xn
discrete pixel grid. Assume x
coordinate in 0
..n-1
and y
coordinate 0
..m-1
, and proceed like if you were drawing a line between (0,0) and (n-1,m-1). Whenever y
coordinate changes, pick an element from index x
.
UPD: But it seems that this simple function will suffice you:
>>> f = lambda m, n: [i*n//m + n//(2*m) for i in range(m)]
>>> f(1,20)
[10]
>>> f(2,20)
[5, 15]
>>> f(3,20)
[3, 9, 16]
>>> f(5,20)
[2, 6, 10, 14, 18]
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…