j13r - 1 year ago 54

Python Question

I have a vector/array of n elements. I want to choose m elements.

The choices must be fair / deterministic -- equally many from each subsection.

With m=10, n=20 it is easy: just take every second element.

But how to do it in the general case? Do I have to calculate the LCD?

Answer Source

Here is a quick example:

```
from math import ceil
def takespread(sequence, num):
length = float(len(sequence))
for i in range(num):
yield sequence[int(ceil(i * length / num))]
```

`math.ceil`

is used because without it, the chosen indexes will be weighted too much toward the beginning of each implicit subsection, and as a result the list as a whole.