Страницы: 1
RSS
Комбинаторика с фильтрацией
 
Здравствуйте.
Составили все возможные комбинации из 14 чисел,каждая строка имеет 3 варианта числового значения(от 1 до 11).Всего комбинаций 3^14 = 4.782.969.
Но нужно отсортировать и вывести только те комбинации чьё среднеарифметическое значение  будет между 7.5 или 6 (6<x<7.5)
Т.е. 1-я комбинация А1,А2,...А14 имеет среднее 8,64 и нам не подходит,а В1,В2,...,В14 имеет среднее 6.5 и подходит под правило.
Возможно ли такое запрограммировать в экселе. Или может искать Другие способы? :)


Ну и книгу кину,там эта микротабличка,если надо.
 
Доп. столбец:
=ЕСЛИ(СРЗНАЧ(...)>=6;СРЗНАЧ(...)<=7,5)
Фильтрация по ИСТИНА
 
см.вложение
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Спасибо за ответы.

Цитата
Ігор Гончаренко написал:
см.вложение
  Почти,но немного наоборот мне надо.Мне нужны ряды из 14 чисел,каждое которое состоит из одного из 3 значений в соответствующей ему строке.Первое число комбинации выбрано из 3х чисел в 1й строке,второе из 3х чисел во второй строке... 14-е число из 3х в 14 строке.Как на картинке таблицы.  Простой перебор всех возможных вариантов: 3 ^14 комбинаций.Всего 4.782.969 комбинаций из 14 чисел. Сложно сразу правильно объяснить просто :(
   Вот кажется ваш файл из какой-то темы,что я нашёл.Только мне слишком сложно расширить правильно формулу,чтобы кроме Ф,И и О было ещё 11 столбцов с соответствующими 1,2 и 3 значениями.Но ваша ФИО таблица именно то,что надо,только не 3^14,а 3^3.
Хз как 5кк комб поместятся на листе,но имея хотя бы полный список с нужными значениями отсортировать по среднеарифметическому в нужном диапазоне уже будет проще :)  
 
А что мой совет? Не так понял? Так напишите хоть слово в ответ...
 
Manta,
сосредоточьтесь над формулировкой задачи, возможно, кто-то сможет Вас понять и помочь
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
vikttur,
см.вложение: не поленился набрать данные, посчитал средние в конце (средние совпали с подсчетами автора)
Цитата
Manta написал:
1-я комбинация А1,А2,...А14 имеет среднее 8,64 и нам не подходит,а В1,В2,...,В14 имеет среднее 6.5
в дополнительный столбец вписал предложенную формулу и...
боюсь что атор темы в так же недоумении, что делать с формулой в каком и мы с тобой от постановки задачи и от дополнительных "разьяснений" по ней.
"разьяснения", которые не вносят ясности нужно бы назвать как-то по другому, но я будучи воспитанным человеком (и скромным) не стану этого делать и буду разьяснения, по-прежнему называть "разяснениями"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Я понял, что среднее трех значений  строке...
 
я начинаю догадываться, что нужно из чисел от 1 до 11 собрать все возможные кобинации, содержащие в себе 14 названных чисел
и будет таких комбинаций 11^14 (это число с 14 нулями и даже больше)
из всего этого огромного множества комбинаций оставить нужно только те, где среднее в заданных пределах, а при чем тут 3^14??? знает только автор темы а скорее всего не знает и он.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Если правильно понял объяснение из 4го сообщения, применительно к файлу из 1го сообщения
Код
Sub www()
    Dim i As Long, j As Long, k As Long, l As Long, m As Long, n As Long, r As Long
    Dim s As Double, a(), out()
    n = 14 'кол-во строк
    m = 3 'кол-во столбцов
    a = [b2].Resize(n, m).Value
    ReDim out(1 To n)
    
    For k = 0 To m ^ n - 1
        l = k
        s = 0
        For i = 1 To n
            j = l Mod m + 1
            l = l \ m
            s = s + a(i, j)
            out(i) = a(i, j)
        Next i
        If s / n > 6 And s / n < 7.5 Then
            r = r + 1
            'Cells(r, 6).Resize(, n) = out
        End If
    Next k
    Debug.Print r
End Sub

получилось 2961858 комбинаций (на лист не помещаются)
если с ними нужно сделать расчеты, то это можно сделать сразу в массиве, не выводя значения на лист
Страницы: 1
Наверх