Distribute(X, [Lefts/Rights/Centers/Marks/Gaps, [First/Last/pcb_crosshair, First/Last/pcb_crosshair[, Gridless]]])

Distribute(Y, [Tops/Bottoms/Centers/Marks/Gaps, [First/Last/pcb_crosshair, First/Last/pcb_crosshair[, Gridless]]])

As with align, plus:

Arguments:

Gaps Make gaps even rather than spreading points evenly.
First, Last, pcb_crosshair Two arguments specifying both ends of the distribution, they can't both be the same.

Defaults are Marks, First, Last

Distributed objects always retain the same relative order they had before they were distributed.