Вот и пригодилась опять теория вероятности ;)

Задача: есть два исполнителя. Необходимо обеспечить, чтобы исполнителю №1 доставалось 2/3 заявок, и исполнителю №2 — 1/3 задач.

Решение: высчитывать какому исполнителю сколько перепало уже заявок и в каком порядке, мне показалось излишним. Тем более, если думать на перспективу, то скорее всего окажется что потом будет добавлено еще несколько исполнителей со своими долями. Поэтому был реализован следующий алгоритм выбора исполнителя:

  • Исполнитель 1, с долями 2/3
  • Исполнитель 2, с долями 1/3

Как вычисляем исполнителя:

Всего долей: 3

  • — Создаем кость, с гранями 1,2,3
  • — Грани 1 и 2  = Исполнитель 1
  • — Грань 3  = Исполнитель 2

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

  • Исполнитель 1:  67%
  • Исполнитель 2:  33 %

Ну и кому интересно, вот код реализации: