Won*_*abo 2 c++ random time date
我写了这段代码片段来生成随机日期:
std::time_t curr_time = time(0);
std::time_t ten_years = 365 * 12 * 30 * 24 * 60;
std::time_t rand_date = curr_time - std::rand() % ten_years;
tm *ltm = std::localtime(&rand_date);
std::cout << ltm->tm_year + 1900 << " " << ltm->tm_mon + 1 << " " << ltm->tm_mday << std::endl;
Run Code Online (Sandbox Code Playgroud)
但是它总是给我当前的日期.我究竟做错了什么?
std :: rand()可能返回相当小的值,0..32767是最小范围,并且在一些流行的32位平台(其中包括MSVC)中这样做.使用time_t以秒为单位,这只会给你大约8小时的随机噪音.
尝试组合来自一对std :: rand调用的结果.例如,
(std::time_t) std::rand() * RAND_MAX + std::rand()或切换到更好的随机数发生器.