Я думаю, что подход, описанный ниже, подойдет. По сути, я создаю список частных, а затем распределяю 1 единицу остатка по списку, пока он не будет полностью использован.
let integerBuckets total divider =
let rem = total % divider
let quo = total / divider
let dividerList = [1..divider]
[ for _ in dividerList do yield quo ] //create list of quotients
|> List.map2 (+) [for i in dividerList do if i <= rem then 1 else 0] //distribuite remainder
EDIT:
Функцию, описанную выше, можно резюмировать как следует:
let integerBuckets2 total divider =
let rem,quo = total % divider,total / divider
[ for i in [1..divider] do yield if i <= rem then quo + 1 else quo ]