使用c++随机生成100个时间窗口,每个时间窗口最长为2小时,最短为2分钟,输出格式为时分秒
时间: 2024-02-18 14:03:40 浏览: 68
用c++语言来中的随机数的生成
好的,我来解答你的问题。
我们可以使用C++中的随机数生成函数来生成100个随机时间窗口。假设随机生成的时间窗口存储在一个结构体数组中,结构体定义如下:
```c++
struct TimeWindow {
string start_time;
string end_time;
};
```
我们可以先生成一个随机的起始时间,然后再生成一个随机的时间长度(单位为秒),计算出结束时间。具体实现如下:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;
struct TimeWindow {
string start_time;
string end_time;
};
string generate_random_time() {
int hour = rand() % 24;
int minute = rand() % 60;
int second = rand() % 60;
string time_str = to_string(hour) + ":" + to_string(minute) + ":" + to_string(second);
return time_str;
}
int main() {
srand(time(NULL));
const int n = 100;
TimeWindow time_windows[n];
for (int i = 0; i < n; i++) {
// 生成随机的起始时间
string start_time = generate_random_time();
// 生成随机的时间长度(单位为秒)
int duration = rand() % (2 * 3600 - 2 * 60) + 2 * 60;
// 计算结束时间
int start_time_sec = stoi(start_time.substr(0, 2)) * 3600 + stoi(start_time.substr(3, 2)) * 60 + stoi(start_time.substr(6, 2));
int end_time_sec = start_time_sec + duration;
int hour = end_time_sec / 3600;
int minute = (end_time_sec - hour * 3600) / 60;
int second = end_time_sec - hour * 3600 - minute * 60;
string end_time = to_string(hour) + ":" + to_string(minute) + ":" + to_string(second);
// 存储时间窗口
time_windows[i].start_time = start_time;
time_windows[i].end_time = end_time;
}
// 输出时间窗口
for (int i = 0; i < n; i++) {
cout << "Point " << i+1 << ": " << time_windows[i].start_time << " - " << time_windows[i].end_time << endl;
}
return 0;
}
```
这里我们使用了一个函数generate_random_time来生成随机的起始时间,使用rand函数来生成随机数。随机的时间长度(单位为秒)使用rand() % (2 * 3600 - 2 * 60) + 2 * 60来生成,表示生成2分钟到2小时之间的随机数。
最后,我们输出生成的100个随机时间窗口。希望我的回答对你有所帮助!
阅读全文