ASP.NET网站制作之C#中完成随机工夫的猎取
据说很厉害,甚至可以把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
{
publicclassDateTimeHelperFixture
{
/**////<summary>
///界限测试
///</summary>
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老师不吝赐教,为小弟这一批迷途的羊羔指一条阳光之道!您也知道:学习技术如果只有一个人摸索,那是一件多么痛苦的事情!还有,如果万辛能得名师或长者指点,那又是多么一件幸福和快乐的事情! 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。 众所周知,Windows以易用而出名,也因此占据不少的服务器市场。 那么,ASP.Net有哪些改进呢? HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了. JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。 asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!
页:
[1]