You can get the forumula for the probability density function (along with a .NET libary) here
However, I work on a call center software myself at my job, and I can tell you the FTEs are never normally distributed. There are usually ~2-3 overlapping normal distributions, one skewed left and one skewed right depending on the time of day (early morning, late afternoon) and type of campaign (B2B to B2C).
For a more accurate estimation I would recommend keeping a history of previous activity/load in your call center (what is the average load at each half-hour intervals) then use that as the distribution baseline, scaling it to fit for the expected peak load and estimated call length. This is what we do in ProtCall, and we are usually right within 90 % - 95 % of the actual load. Sometimes. Sometimes we miss by a factor of 10.
EDIT:
Ok, I took a little time to look at how we estimate loads, and standard distribution is not going to get you nowhere. Take a look at a couple of screenshots from our charts and you'll see how diferent the distribution actually looks.
What you need to do( basically ):
- Sample the number of calls made each minute (how many calls we had since 60 seconds ago)
- Save those samples in a table : TimeOfDay, CallsMade
- Load those samples and scale them. (ie. if our total table has 10.000 calls and we estimate our new activity to have 4.000 calls per day, multiply everything by 0.4. You can
scale by estimated nr of calls or (more acuratelly) by estimated number of talk-time-minutes per day)
Alternatively, if you simply have a table with a row entry for each call made you can simply :
SELECT count(*),datepart(hour,[CalledOn]) as CalledOn from tableCalls group by datepart(hour,[CalledOn])
to count the calls made each hour. It will sample per hour, not per minute, but it might be enough to give you the baseline