繁体   English   中英

C# 在 08:20:00 和 08:29:59 之间生成 5 个随机时间

[英]C# Generate 5 random times between 08:20:00 and 08:29:59

我需要在 08:20:00 到 08:29:59 之间生成 5 个随机时间。

这些时间需要从左到右添加到顶部文本框中。

图形用户界面

我目前正在使用以下代码进行操作:

private void Button1_Click(object sender, EventArgs e)
{
    listBox1.Items.Clear();
    Random random = new Random();
    TimeSpan start = TimeSpan.FromHours(08.20);
    TimeSpan end = TimeSpan.FromHours(08.30);
    int maxMinutes = (int)((end - start).TotalMinutes);

    for (int i = 0; i < 5; ++i)
    {
        int minutes = random.Next(maxMinutes);
        TimeSpan t = start.Add(TimeSpan.FromMinutes(minutes));
        listBox1.Items.Add(t);
    }
}

这就是它的样子。

目前,它没有在时间范围内生成它们,也不包括关键的秒数。 我还需要一个解决方案将它们添加到它们的插槽中。

1st generated needs to go into monday_In, 2nd needs to go into tuesday_In, 3rd needs to go to wednesday_In, 4th needs to go to thursday_In, 5th needs to go to friday_In

关于如何做到这一点的任何想法?

首先,8.20 小时不是 8 小时 20 分钟。 这是8小时12分钟。 同样,8.30 小时是 8 小时 18 分钟。

所以你应该改变初始化开始和结束时间的方式:

var start = new TimeSpan(8, 20, 0);
var end = new TimeSpan(8, 30, 0);

其次,如果要在生成随机时间时获得秒精度,则需要以seconds为单位的差异,而不是分钟:

var secondsDifference = (int)(end.TotalSeconds - start.TotalSeconds);

要获得随机时间,您可以简单地执行startTime + x seconds其中x0secondsDifference之间的随机数:

for (int i = 0 ; i < 5 ; i++) {
    var randomTime = start + TimeSpan.FromSeconds(random.Next(secondsDifference));
    listBox1.Items.Add(randomTime);
}
private void Button1_Click(object sender, EventArgs e)
{
    listBox1.Items.Clear();
    Random random = new Random();
    long start = TimeSpan.FromHours(08.20).Ticks;
    long end = TimeSpan.FromHours(08.30).Ticks;

    for (int i = 0; i < 5; ++i)
    {
        long ticks = random.NextLong(start, end);
        TimeSpan t = TimeSpan.FromTicks(ticks);
        listBox1.Items.Add(t);
    }
}

编辑

忘了这是一个自定义扩展

public static long NextLong(this Random random, long minValue, long maxValue)
{
    long dif = maxValue - minValue;
    return (long)Math.Round((random.NextDouble() * dif) + minValue);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM