我实现了下面的 RandomDate,但我总是不断获取接近“From”日期的值,我可能在这里错过了一些东西......
public static DateTime GetRandomDate(DateTime from, DateTime to)
{
var range = new TimeSpan(to.Ticks - from.Ticks);
var rnd = new Random();
var randTimeSpan = new TimeSpan((long)(range.TotalSeconds - rnd.Next(0, (int)range.TotalSeconds)));
return from + randTimeSpan;
}
您可以更改为:
static readonly Random rnd = new Random();
public static DateTime GetRandomDate(DateTime from, DateTime to)
{
var range = to - from;
var randTimeSpan = new TimeSpan((long)(rnd.NextDouble() * range.Ticks));
return from + randTimeSpan;
}
说明:我用过NextDouble()
因为它给出了一个介于0.0
and 1.0
。在我的解决方案中,您的返回值不会是整数秒。而我搬家了rnd
输出到类/结构上的字段。因为最好重复使用一个Random
实例,而不是每次只需要一个额外的随机数时就创建一个新的随机数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)