首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >上午7点到11点之间的随机时间生成器

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

Stack Overflow用户
提问于 2012-11-28 02:14:22
回答 9查看 20.1K关注 0票数 9

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

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

我不知道该从何说起。我在发帖前用谷歌搜索了一下,发现了一个有趣的搜索结果

代码语言:javascript
运行
复制
www.random.org/clock-times/

唯一的问题是,所有“随机”生成的时间都是按顺序生成的。我可以把它弄乱一次,但我需要生成100到10,000个条目。

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

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-11-28 02:20:10

计算启动和停止时间之间的分钟数,然后生成一个介于0和最大分钟数之间的随机数:

代码语言:javascript
运行
复制
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...
}

备注:

  • 只能创建一个随机对象,否则会有很多重复的对象。
  • 开始时间是包含的,结束时间是独占的。如果您还想包括结束时间,请将1加到maxMinutes。
票数 13
EN

Stack Overflow用户

发布于 2012-11-28 02:18:34

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

代码语言:javascript
运行
复制
DateTime start = DateTime.Today.AddHours(7);
Random rnd = new Random();

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

代码语言:javascript
运行
复制
DateTime value = start.AddMinutes(rnd.Next(241));

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

代码语言:javascript
运行
复制
string time = value.ToString("HH:mm");
票数 12
EN

Stack Overflow用户

发布于 2012-11-28 02:19:02

这是一个通用的方法,可以为您提供一个介于给定开始日期和结束日期之间的随机日期。

代码语言:javascript
运行
复制
public static DateTime RandomDate(Random generator, DateTime rangeStart, DateTime rangeEnd)
{
    TimeSpan span = rangeEnd - rangeStart;

    int randomMinutes = generator.Next(0, (int)span.TotalMinutes);
    return rangeStart + TimeSpan.FromMinutes(randomMinutes);
}

如果你经常使用这样的东西,你可以让它成为Random上的扩展方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13590465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档