fork download
  1. #include <iostream>
  2. #include <random>
  3. #include <string>
  4. #include <vector>
  5. #include <cstdint>
  6. #include <chrono>
  7. #include <algorithm>
  8.  
  9. typedef std::vector<std::string> SVec;
  10.  
  11. SVec MakeSVec(std::size_t V, std::size_t H) {
  12. std::string Sfen = "KRBGANLPkrbgsnlp123456789wb+- ";//字数あってるかな??
  13.  
  14. std::random_device rd;
  15. //std::mt19937 mt(rd());//if you need perfect random to delte comment out in top of this line.
  16. std::mt19937 mt(0);
  17. std::uniform_int_distribution<std::size_t> SF(0, Sfen.size()-1);//sfen表現の予定
  18. std::uniform_int_distribution<std::size_t> BF(H-32, H+32);//盤面表現の予定
  19. std::uniform_int_distribution<> PV(-1000000, 1000000);//数字は適当。
  20. std::uniform_int_distribution<std::size_t> PN(16, 256);//パラメータ数の予定
  21.  
  22. std::string S;
  23. SVec R(V);
  24.  
  25. std::size_t SN = 0;
  26.  
  27. for (auto& o : R) {
  28. S.clear();
  29. SN = BF(mt);
  30. S += "'";
  31. for (std::size_t i = 0; i < SN; i++) {
  32. S += Sfen[SF(mt)];
  33. }
  34. S += "'";
  35. SN = PN(mt);
  36. for (std::size_t i = 0; i < SN; i++) {
  37. S += ',' + std::to_string(PV(mt));
  38. }
  39. o = S;
  40. }
  41.  
  42. std::sort(S.begin(), S.end());
  43.  
  44. return R;
  45.  
  46. }
  47.  
  48. bool Shuffle(SVec& S) {
  49. std::random_device rd;
  50. std::mt19937 mt(rd());//if you need perfect random to delte comment out in top of this line.
  51. //std::mt19937 mt(0);
  52.  
  53. std::shuffle(S.begin(), S.end(),mt);
  54.  
  55. return true;
  56. }
  57.  
  58. int main() {
  59. std::size_t H = 1000000;
  60. std::size_t V = 80;
  61. SVec R;
  62.  
  63. std::cout << "start data generation.";
  64. auto S = std::chrono::high_resolution_clock::now();
  65.  
  66. R = MakeSVec(H, V);
  67.  
  68. auto E = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - S);
  69.  
  70. std::cout << "..Done. time:"<<E.count()<<"ms."<<std::endl;
  71.  
  72. std::cout << "start data Shuffle.";
  73. S = std::chrono::high_resolution_clock::now();
  74. Shuffle(R);
  75. E = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - S);
  76. std::cout << "..Done. time:"<<E.count()<<"ms."<<std::endl;
  77.  
  78. std::cout << "Thank you!" << std::endl;
  79. return 0;
  80. }
Time limit exceeded #stdin #stdout 5s 105216KB
stdin
Standard input is empty
stdout
Standard output is empty