随机时间生成器在上午7点到11点之间的时间

Coc*_*Dev 2 c# winforms random-time-generation

我正在创建一个测试文件,我需要在上午7点到11点之间随机填充它.重复输入即可,只要它们不完全相同即可

我也只对HH感兴趣:MM(没有秒)

我不知道从哪里开始.在发布之前我做了谷歌,我发现了一个有趣的搜索结果

www.random.org/clock-times/
Run Code Online (Sandbox Code Playgroud)

唯一的问题是"随机"生成的所有时间都是按顺序排列的.我可以将它排除在序列之外但我需要生成100到10,000个条目.

我希望创建一个WinForm C#应用程序来帮助我做到这一点.

Guf*_*ffa 10

DateTime为下限和随机生成器创建一个值:

DateTime start = DateTime.Today.AddHours(7);
Random rnd = new Random();
Run Code Online (Sandbox Code Playgroud)

现在,您可以通过向其添加分钟来创建随机时间:

DateTime value = start.AddMinutes(rnd.Next(241));
Run Code Online (Sandbox Code Playgroud)

要将其格式化为HH:MM,您可以使用自定义格式:

string time = value.ToString("HH:mm");
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 6

计算开始和停止时间之间的分钟数,然后生成0到最大分钟数之间的随机数:

Random random = new Random();
TimeSpan start = TimeSpan.FromHours(7);
TimeSpan end = TimeSpan.FromHours(11);
int maxMinutes = (int)((end - start).TotalMinutes);

for (int i = 0; i < 100; ++i) {
   int minutes = random.Next(maxMinutes);
   TimeSpan t = start.Add(TimeSpan.FromMinutes(minutes));
   // Do something with t...
}
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 您应该只创建一个随机对象,否则您将连续获得许多重复项.
  • 开始时间是包含的,但结束时间是独占的.如果您还要包括结束时间,请将max.1inutes添加1.