保证s2大概率是s1的子串
#include <iostream>
#include <string>
#include <random>
#include <chrono>
std::string random_string(std::size_t length)
{
static std::mt19937 rand_engine(std::chrono::system_clock::now().time_since_epoch().count());
static std::uniform_int_distribution<int> dist(0, 25);
std::string result;
result.reserve(length);
for (std::size_t i = 0; i < length; ++i) {
result.push_back('A' + dist(rand_engine));
}
return result;
}
int main()
{
std::mt19937 rand_engine(std::chrono::system_clock::now().time_since_epoch().count());
std::uniform_int_distribution<int> dist_m(1, 1000000);
std::uniform_int_distribution<int> dist_n(1, 1000000 - 1);
std::size_t m = dist_m(rand_engine);
std::size_t n = dist_n(rand_engine);
std::string s1 = random_string(m);
std::uniform_int_distribution<int> dist_start(0, m - n);
std::size_t start = dist_start(rand_engine);
std::string s2 = s1.substr(start, n);
// std::cout << "m: " << m << std::endl;
// std::cout << "n: " << n << std::endl;
std::cout << s1 << std::endl;
std::cout << s2 << std::endl;
return 0;
}