У нас есть определенная сумма, например. 300 единиц. Эта сумма должна быть как можно более равномерно распределена по 40 слотам. Было бы легко, если бы каждый слот был бы таким же, поэтому в каждом слоте было бы 7,5. Однако слоты различаются по размеру, и мы не можем «заполнить» там больше, чем его «размер» позволяет, например, если его только 5. Что мы не можем «заполнить», мы должны распространять больше по сравнению с другими.Распределение суммы как можно более равномерно
У меня есть некоторые основные идеи, но я далек от того, чтобы быть expeRt и надеюсь, что есть простой способ решить эту проблему. В качестве примера, как это могло бы выглядеть. В массиве «a» значения обозначают максимумы, которые могут занимать слоты. a [i] - максимум i-го интервала. «b» - это то, что мы должны распространять в целом, например. 300.
# developing slots and their "size"
a <- rnorm(40,10,4)
sum(a)
# overall sum to distribute
b <- 300
Может быть, можно отсортировать значения в порядке возрастания, а затем можно было бы использовать его двойной цикл. a [, 2] становится столбцом для «заполненной» суммы.
for i in 1:40
{a[i,2] <- a[1,2]*40
b <- a [1,2]*40}
for i in 2:40
{a[i,2] <- a[1,2]*39
b <- a[1,2]*39}
etc.
Я не уверен, как я могу объединить оба цикла, и если это адекватное решение в целом. Счастливый услышать ваши идеи. Благодаря!
Я не следую. Где информация о размере, который может принимать каждый слот? У вас есть эта информация отдельно? Как и в каждом из 40 слотов. – Maiasaura
массив a говорит, сколько может занимать каждый слот. b <- 300 - это сумма, которую мы должны распределять в целом по слотам. –