我实现了下面的 RandomDate,但我总是让值接近“从”日期,我可能在这里遗漏了一些东西......
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
和 1.0
之间的数字。在我的解决方案中,您的返回值不会是整数秒。我将 rnd
移到了类/结构上的一个字段中。因为最好重用一个 Random
实例,而不是每次只需要一个额外的随机数时都创建一个新实例。
关于c# - 范围之间的随机 DateTime - 不统一输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14505932/