任何人都可以请求建议/提供C++代码以生成随机日期(更准确地说是日期&时间或YYYY-MM-DDTHH:MM:SS),在今天和5年前之间生成。如果它是基于统一分配的话,应该没问题。在C++中随机生成日期和时间
回答
嗯,有些可能会争辩说,以下是“比C++更加C”,但你仍然可以试试看......
首先,定义的最大秒数,你想“回到”:
#define MAX_NUM_OF_SECONDS (5*365*24*60*60) // number of seconds in 5 years
为了确保均匀分布,这个数字应该不比RAND_MAX*RAND_MAX
大。
然后,执行返回时间/日期结构的随机内容的功能:
struct tm* GetTimeAndDate()
{
unsigned int now_seconds = (unsigned int)time(NULL);
unsigned int rand_seconds = (rand()*rand())%(MAX_NUM_OF_SECONDS+1);
time_t rand_time = (time_t)(now_seconds-rand_seconds);
return localtime(&rand_time);
}
如果你在一个多线程应用程序的工作,那么请注意,此功能是不是线程安全。
最后,播种RNG你开始使用它(例如,在你的程序的开始)前:
int main()
{
...
srand((unsigned int)time(NULL));
...
}
+1可能是统一的分配要求。 – drescherjm
感谢,+ barak manos和+ clcto,这几乎是我的问题的答案,可以使用stl分发。再次感谢 – pascal
@SKhan:不客气:) –
如果你知道你的开始日期和结束日期,你可以使用strptime(),转换的日期time_t的通常是长整型。鉴于这些长整数,你应该能够在它们之间创建一个随机整数。使用strftime()将该长整数转换回日期/时间字符串。
'strptime'不是标准的C++;它是Posix的一部分。 –
- 1. 在服务中生成随机日期和时间
- 2. 如何在两个日期之间生成随机日期和时间?
- 3. 机器人 - 随机生成的日期和时间
- 4. 生成的Java(乔达时间)随机日期时间
- 5. 生成随机日期
- 6. 在随机时间生成随机线程C
- 7. 生成随机出生日期
- 8. 为明天的日期生成随机unix时间戳
- 9. 使用VB脚本随机生成日期时间
- 10. 如何在objective-c中生成一个随机日期?
- 11. 随机时间生成
- 12. 2日期值之间的随机时间和日期
- 13. 在特定的月份和年份中生成随机日期
- 14. C#生成的日期时间
- 15. 生成随机生日
- 16. 如何随机生成特定的日期之间的日期在MySQL
- 17. 如何根据当前日期和时间生成6位随机数
- 18. 在C++/cli中生成1和max之间的随机double
- 19. 如何在C中生成-1和1之间的随机数?
- 20. 时间和日期生成webservice
- 21. Mysql在给定的日期时间范围中插入随机日期时间
- 22. jQuery在随机时间生成随机数
- 23. Python日期时间随机破坏
- 24. 随机时间更新日期
- 25. 仅在工作日生成随机日期
- 26. 在会话超时时生成日期时间标记c#
- 27. 如何在Go lang中生成随机日期?
- 28. 用间隔时间随机生成一个数字c#
- 29. 生成简单的随机数与时间在C
- 30. 生成随机unix时间戳
因为这是一个非常具体的问题,请解释一下,你被困当你第一次尝试自己的解决方案时。 –
生成0到5年之间秒数的随机数,并将其添加到5年前的日期。 – clcto
不,我们不能提供代码。首先告诉我们你有什么尝试。 – Zaffy