Как получить возможные результаты получения фиксированного среднего? - PullRequest
3 голосов
/ 15 марта 2012

Я знаю, что этот вопрос трудно понять, но мне нужно математическое уравнение для JavaScript.

I am having dynamic number from 0 to 7.

Сейчас у меня 5 записей:

a = from 0 to 7,
b = from 0 to 7,
c = from 0 to 7,
d = from 0 to 7,
e = from 0 to 7

Теперь мне нужно уравнение, из которого я могу найти возможные выходные значения a, b, c, d и e, которые в среднем составляют 5.

Like for average = 5:
1. a = 5, b = 5, c = 5, d = 5, e = 5
2. a = 2, b = 7, c = 6, d = 5, e = 5

Пользователь введет желаемое среднее значение, и мне нужно выдать возможные выходные данные, чтобы получить заполненное среднее.

1 Ответ

1 голос
/ 15 марта 2012

Кажется, это проблема, связанная с целочисленным программированием.Его можно решить относительно эффективно, используя стратегию динамического программирования, которая поддерживает инвариант для меньших подзадач и объединяет эти подзадачи в окончательное решение.Вот высокоуровневый алгоритм, который возвращает вас к вашей цели:

1) Начните со случайного начального числа, x_1 между 0,7

2) Теперь выполните следующие тривремена (i = 2, 3, 4):

3) Найдите минимально возможное следующее число.Чтобы получить в среднем 5 для ваших пяти чисел, ваша целевая сумма для всех пяти - 25. Поэтому вам нужно убедиться, что вы не лишаете себя возможности достичь 25 вообще.Итак, пусть min_i + 1 определяет наименьшее число 0,7, так что сумма всех x_i на данный момент плюс min_i + 1 * (5-i)> = 25.

Пример: скажем, i = 2 и ваши числа до сих пор были 4 и 5. Тогда минимально допустимое третье число min_3 равно 6. Сумма до сих пор составляет 9 и 5-i = 3. 9 + 3 * 6 = 27> =25 и 9 + 3 * 5 = 24 <25. Это означает, что если вы выбрали 5 в качестве min_3, вы больше не сможете достичь своей цели в сумме 25. </p>

4) Выберите x_i+1 как случайное число между min_i + 1 и 7.

5) Наконец, выберите x_5 как 25 - сумма x_1..x_5.Выведите x_1 до x_5.


Пример для всего алгоритма:

Пусть x_1 = 6.

=> min_2 = 5, сумма = 6

Пусть x_2 = 5.

=> min_3 = 5, сумма = 11

Пусть x_3 = 7.

=> min_4 = 4, сумма = 18

Пусть x_4 = 5

=> sum = 23

=> x_5 = 2 (= 25 - 23)

Выход: [6, 5,7, 5, 2], который действительно имеет среднее значение 5.

Теперь этот алгоритм будет давать очень смещенный вывод, если вы хотите, чтобы он появлялся более случайным образом, просто служил перестановкой конечного результатаНапример, в нашем примере вы могли бы вместо этого вывести [5, 7, 2, 5, 6].

Это не должно быть проблемой для реализации этого в Javascript, и его можно легко адаптировать к другим возможным диапазонам для x_i.и общее среднее.Просто обязательно измените целевую сумму на n * avg, если ваш конечный размер выборки должен быть n со средним значением avg.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...