Алгоритм распределения по таблице

  1. 8 г. назад

    Вообщем имеем таблицу.
    В каждой строке таблицы целые числа от 0 до 10.
    Чем больше число тем реже оно встречаетсяв таблице. Нулей больше всего.
    Строк в такой таблице допустим 1000.

    Итого сумма по строкам допустим 3000
    Надо сделать что бы итоговая сумма была 3200.

    На ноль распределять нельзя. Дробные числа тоже не нужны.
    Равномерный алгоритм распределения что то сразу в голову не приходит. Есть идеи?

    Ответы: (2) (3) (5) (6)
  2. простая скользящая средняя...

  3. (0) по "диагоналям" распределяй.

  4. (0) есть идея воспользоваться процедурой из типовой конфы. пойдет?

    Ответы: (4)
  5. +(3) Функция РаспределитьПропорционально(Знач ИсхСумма, МассивКоэф, Знач Точность = 5, ПроверкаНулевыхЗначений=Истина)

  6. 17.12.2015 16:41:12 отредактировано ЗлобнийМальчик

    (0) что есть равномерно? строки должны приобрести дополнительные значения равномерно? или равномерность должна быть обеспечена на уровне индивидуальных чисел

  7. 17.12.2015 18:43:18 отредактировано sda553

    (0) взять генератор случайных чисел от 1 до 10^10. Каждое случайно число преобразовывать к виду y=10-round(log(x)) где логарифм берется по основании 10.
    Вот тебе и равномерное логарифмическое распределение, 0 чаще всего, 10 почти никогда.

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

  9. Вобщем я по своему сделал.
    1 - Создаю ТЗ. В ТЗ колонка "НСтроки";
    2 - Обхожу мою таблицу с данными. Если в таблице стоит число "3" в ТЗ создаю три строки, в НСтроки пишу номер строки таблицы.
    3 - Рандомом стреляю в ТЗ. Беру куда попал НСтроки. Нахожу таблицу с этим НСтроки и увеличиваю на единицу. Повторяю пока не кончится число распределения.

или зарегистрируйтесь чтобы ответить!