我正在尝试生成一些测试数据。
假设我需要在一个日期范围内分配 1000 个约会。
现在我需要分配这些约会,使月底每天的约会数量是月初的两倍。约会的增加需要以一致的速度增加。
因此,例如,如果在本月的第一天有 5 次约会,那么到月底,我们每天将获得 10 次约会。
约会只能在工作日进行。
是否有一个像样的算法可以帮助我以这种方式分发这些日期?
编辑
这是迄今为止我得到的最好的,受 Henriks 解决方案的启发:
private int GetNumForCurrentDate (DateTime date)
{
int daysInMonth = DateTime.DaysInMonth ( date.Year, date.Month );
// x is the number of appointments on the first day
double firstDay = this._NumPerMonth / ( ( ( ratio + 1 ) / 2 ) * daysInMonth );
// x * ratio is the number of appointments on the last day.
double lastDay = firstDay * ratio;
// Interpolate a value between the first and last days
double exactNumOnThisDay = firstDay + ( lastDay - firstDay ) * ( (double)date.Day / (double)daysInMonth );
int numOnThisDay = Convert.ToInt32 ( Math.Truncate ( exactNumOnThisDay ) );
// Accumulate any overflow
this._Overflow += exactNumOnThisDay - numOnThisDay;
if ( this._Overflow > 1 )
{
// Shove the overflow into our number when it gets into whole number teritory
numOnThisDay++;
this._Overflow--;
}
return numOnThisDay;
}
它返回在给定日期的特定日期分配的天数。它负责分离每个月的分配并处理舍入溢出,但它不是很完美,在最后一天分配的天数已经用完了,但现在已经足够好了,我已经没有时间来完善它了。 .