c# - 范围之间的随机 DateTime - 不统一输出

标签 c# datetime random timespan

我实现了下面的 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.01.0 之间的数字。在我的解决方案中,您的返回值不会是整数秒。我将 rnd 移到了类/结构上的一个字段中。因为最好重用一个 Random 实例,而不是每次只需要一个额外的随机数时都创建一个新实例。

关于c# - 范围之间的随机 DateTime - 不统一输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14505932/

相关文章:

c# - 计时器应用程序未正常运行

php - 根据 PHP 中的语言环境为 IntlDateFormatter()->format() 生成适当的模式

c++ - 如何产生随机数,使它们的总和等于给定的数字?

c++ - 英特尔 MKL 一次可以生成多少个随机数?似乎超出了一些限制

c# - 如何检查Windows用户是否设置了密码?

c# - 使用 DI 和 InstanceContextMode.Percall 的自定义 ServiceHost

c# - 如何将 dataGrid 中的日期值与当前日期进行比较?

c++ - 你如何在c/c++中顺序创建伪随机数?

c# - 如何在 C# 应用程序中打开 sapi 火车窗口?

r - 转换小时 :min:sec column of type character to time