|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
据说很厉害,甚至可以把C#也干掉^_^,不过也很复杂,本来C++已经够复杂的。有人甚至还提出把这个东东引进标准,我觉得基本上不可能的。随机道理实在十分复杂,掏出两个工夫差的秒数,再在0到该秒数之间随机猎取一个整数,将其做为秒增加到较小的工夫上,能够说完成上并没甚么手艺难点,能够在数据范例的界限前提上却必要分外的注重,好比将年夜于System.Int32.MaxValue或小于System.Int32.MinValue的值转成int时,假如间接在变量前加上范例名转换((int)d),不会有有非常发生,但失掉的值倒是System.Int32.MinValue,另有就是关于Math.Abs办法,当参数value即是MinValue将会激发System.OverflowException非常。
代码以下:
usingSystem;
namespaceYyw
{
publicclassDateTimeHelper
{
/**////<summary>
///猎取随机工夫
///<remarks>
///因为Random以以后体系工夫做为种值,以是当疾速运转屡次该办法所失掉的了局大概不异,
///这时候,你应当在内部初始化Random实例并挪用GetRandomTime(DateTimetime1,DateTimetime2,Randomrandom)
///</remarks>
///</summary>
///<paramname="time1"></param>
///<paramname="time2"></param>
///<returns></returns>
publicstaticDateTimeGetRandomTime(DateTimetime1,DateTimetime2)
{
Randomrandom=newRandom();
returnGetRandomTime(time1,time2,random);
}
/**////<summary>
///猎取随机工夫
///</summary>
///<paramname="time1"></param>
///<paramname="time2"></param>
///<paramname="random"></param>
///<returns></returns>
publicstaticDateTimeGetRandomTime(DateTimetime1,DateTimetime2,Randomrandom)
{
DateTimeminTime=newDateTime();
DateTimemaxTime=newDateTime();
System.TimeSpants=newSystem.TimeSpan(time1.Ticks-time2.Ticks);
//猎取两个工夫相隔的秒数
doubledTotalSecontds=ts.TotalSeconds;
intiTotalSecontds=0;
if(dTotalSecontds>System.Int32.MaxValue)
{
iTotalSecontds=System.Int32.MaxValue;
}
elseif(dTotalSecontds<System.Int32.MinValue)
{
iTotalSecontds=System.Int32.MinValue;
}
else
{
iTotalSecontds=(int)dTotalSecontds;
}
if(iTotalSecontds>0)
{
minTime=time2;
maxTime=time1;
}
elseif(iTotalSecontds<0)
{
minTime=time1;
maxTime=time2;
}
else
{
returntime1;
}
intmaxValue=iTotalSecontds;
if(iTotalSecontds<=System.Int32.MinValue)
maxValue=System.Int32.MinValue+1;
inti=random.Next(System.Math.Abs(maxValue));
returnminTime.AddSeconds(i);
}
}
}
测试代码:
usingSystem;
usingNUnit.Framework;
namespaceYyw
{
[TestFixture]
publicclassDateTimeHelperFixture
{
/**////<summary>
///界限测试
///</summary>
[Test]
publicvoidTestGetRandomTime()
{
DateTimeminTime=DateTime.MinValue;
DateTimemaxTime=DateTime.MaxValue;
Randomrandom=newRandom();
for(inti=0;i<10000;i++)
{
DateTimerandomTime=DateTimeHelper.GetRandomTime(maxTime,minTime,random);
CheckResult(minTime,maxTime,randomTime);
}
for(inti=0;i<10000;i++)
{
DateTimerandomTime=DateTimeHelper.GetRandomTime(minTime,maxTime,random);
CheckResult(minTime,maxTime,randomTime);
}
}
privatevoidCheckResult(DateTimeminTime,DateTimemaxTime,DateTimerandomTime)
{
System.TimeSpants1=newSystem.TimeSpan(randomTime.Ticks-minTime.Ticks);
System.TimeSpants2=newSystem.TimeSpan(randomTime.Ticks-maxTime.Ticks);
Assert.IsTrue(ts1.Seconds>=0&&ts2.Seconds<=0);
}
}
}
兄弟们,想来你们都看过了昨天的比赛了。我现在的痛苦状跟当时应该差不多。希望本版.net老师不吝赐教,为小弟这一批迷途的羊羔指一条阳光之道!您也知道:学习技术如果只有一个人摸索,那是一件多么痛苦的事情!还有,如果万辛能得名师或长者指点,那又是多么一件幸福和快乐的事情! |
|