Страницы: Пред. 1 2
RSS
Как разделить разные суммы между n людей так, чтоб у всех было поровну?, надо узнать кто кому сколько передает
 
Цитата
Андрей VG написал:
На выходных расковыряю
Сделал примеры на 20, 40 и 100 значений с заполнением случайными величинами (числа должны быть целыми)
Потестируйте
Изменено: MCH - 17.11.2020 10:41:59 (Добавил расчет на 200)
 
Ігор Гончаренко, теперь ясно, спасибо. Скажите пож-та как можно изменить таблицу на большее/меньшее число участников, т.к. при обычном добавлении столбцов-строк и растягивании формулы возникает ошибка
 
А кто-то уже рассматривал способ "расчета вистов в преферансе"?
1. Сначала делим сумму каждого на (n-1) "карманов", соответствующих каждому из "других игроков"
2. Затем вычитаем значение, лежащее в i-том кармане j-того игрока, из значения j-того кармана i-того игрока и делим разницу пополам для определения величины транзакции между ними (направление транзакции определяется знаком разницы значений)
Таким образом, общее количество транзакций должно составлять сумму от чисел 0 до n или 1/2 *(n-1)*n
Изменено: IKor - 16.11.2020 16:38:41
 
MCH, в вашей формульной версии решения также не понял как увеличить/уменьшить число участников - метод расягивания формул не подходит. Подскажите пож-та на примере листа Вар10 из файла "ПерераспределениеДоходов(илиЗатрат)2-3.xlsx"
 
Цитата
Barmaldon написал:
Скажите пож-та как можно изменить таблицу на большее/меньшее число участников,
как уменьшить:
1. в колонке В очистите значение у последнего участника. Готово, все пересчитано на 3-х

как увеличить:
1. добавьте в А под последним именем столько новых имен, сколько нужно
2. впишите в В исходные данные
3. исправьте формулу в В1, которая считает среднее, поставьте курсор в В1, потяните подсветившийся на листе диапазон за уголок вниз до нужного размера
4. за колонкой G вставьте столько колонок, сколько имен добавили в колонку А
5. внесите новые имена в строку 3 (Табло1 и Табло2, если нужно)
6. поставьте курсор в ячейку Д5, используемые в формуле диапазоны станут выделенными разноцветными рамками на листе.
7. исправьте размеры 2-х диапазонов: диапазон с исходными в В и диапазон в строке 3 с именами  (как исправили размер диапазона в п.3)
8. скопируйте Д5 во все ячейки увеличившегося Табло1
9. если нужно, то скопируйте и в Табло2
удачи!
Изменено: Ігор Гончаренко - 16.11.2020 16:53:56 (и забыл написать, но вы-то знаете что делать 10. строку 4 в Табло2 заполните пробелами)))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
MCH написал:
Сделал примеры на 20, 40 и 100 значений
Михаил, спасибо за интереснейшее исследование!
Владимир
 
Ігор Гончаренко, спасибо, теперь все ясно. Только имхо надо в инструкцию еще добавить п.10.: в строке 4 Табло 2 вставить в добавленные колонки значения из крайней левой ячейки строки 4 Табло2
 
Цитата
Barmaldon написал:
в вашей формульной версии решения также не понял как увеличить/уменьшить число участников
Формулы массива в заголовках заменил на обычные формулы, теперь вставлять/удалять/растягивать будет проще
Изменено: MCH - 17.11.2020 12:46:49
 
Цитата
Barmaldon написал:
еще добавить п.10
я действительно это пропустил, но минут череp 5 исправил, см. курсив снизу сообщения #35, там есть п.10
не начинайте снова о пустых ячейках в 4-й строке)))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
MCH, спасибо
 
В продолжении решения задачи макросом, для сокращения количества транзакций, можно отсортировать исходный массив данных случайным образам, запустить решение несколько раз и выбрать лучшее решение (с наименьшим количеством транзакций).
Каждый раз макрос подберет решение с наименьшей суммой транзакций, пытаясь сократить их количество, тем самым можно немного улучшить решение, если это возможно.

Например, для задачи про машины уже находится не 29, а 28 транзакций - это наименее возможное для этой задачи
Также на приложенных случайных данных в задачах на 100 и 200 значений получается немного их уменьшить
Изменено: MCH - 20.11.2020 11:59:16
Страницы: Пред. 1 2
Наверх