热得到范围内的随机日期

时间:2010-03-03 15:01:30

标签: c++ c

我有两个日期作为字符串(dd-mm-yyyy)。 我怎样才能在这两个日期之间得到一个随机日期?

4 个答案:

答案 0 :(得分:3)

您可以将日期转换为Unix时间戳。随机选择两个时间戳之间的时间戳并将其转换回日期。

答案 1 :(得分:1)

将日期转换为固定数字,例如Julian值(称为J1和J2)。从0< = N< = J2-j1生成“随机”数。然后将J1 + N从Julian转换回日期。

答案 2 :(得分:0)

将日期转换为3个整数:d1 = dd,m1 = mm,y1 = yyyy,与d2,m2,y2相同

然后,假设您知道如何生成随机数(http://www.cprogramming.com/tutorial/random.html),则在y1和y2之间生成一个随机数,它将作为年份。然后dd可以在1到28之间随机生成,mm在1到12之间。这会将你的所有天数限制在最大值28。您可以先随机生成月份,然后使用表格查找每个月的天数(如果您考虑一下,您甚至不需要一张桌子,只是一种方法来检测闰年来解释2月份有29天天)。

要在a和b之间生成随机int,您可以使用:

int random = a + rand() % (b - a + 1);

你可以扩展它以适用于y1 = y2甚至m1 = m2的日期以及一些额外的条件

答案 3 :(得分:0)

使用标准库time.h中的类型和函数:

http://en.wikipedia.org/wiki/Time.h

将字符串部分转换为整数,然后将它们转换为time_t。在计算两者之间的随机值后,转到另一种方式将结果输入字符串。