Я пытаюсь неравномерно распределить нагрузку по каждому часу дня с пиковой нагрузкой около полудня, когда доступно больше людей.По сути, я хочу «нормальное распределение» задач в сравнении с простым n / 24 = hourly load
.
Цель состоит в том, чтобы большую часть работы нужно было выполнять в середине дня с меньшим количеством работы рано утром и поздно ночью.
Это все, что я получил, создавая что-то вроде кривой.
// Number per day
const numberPerDay = 600;
const numberPerHour = numberPerDay / 24;
let total = 0;
for (let hour = 1; hour < 24; hour++) {
// Normal Distribution should be higher at 12pm / noon
// This Inverse bell-curve is higher at 1am and 11pm
const max = Math.min(24 - hour, hour);
const min = Math.max(hour, 24 - hour);
const penalty = Math.max(1, Math.abs(max - min));
const percentage = Math.floor(100 * ((penalty - 1) / (24 - 1)));
const number = Math.floor(numberPerHour - (numberPerHour * percentage / 100));
console.log(`hour: ${hour}, penalty: ${penalty}, number: ${number}`);
total += number;
}
console.log('Expected for today:', numberPerDay);
console.log('Actual for today:', total);
Live jsfiddle .
, которая производит что-токак это: