// 产生[a~b)之间 n 个随机数,且随机数不同 // 注:包含a本身,但不包含b,当指定数量 n 大于[a~b)范围时,使用范围值 // result可预先设置一些固定的值,即随机数一定包含那些值 int genRandom(std::vector<int>& result, int a, int b, int n) { int total = b - a; if (n > total) n = total;
int i = 0; bool found = false; // 注:使用tmp临时保存,如直接用result,得到的容量会多一些 std::vector<int> tmp; tmp.resize(n); srand(time(NULL)); while (1) { //公式:a + rand() % n,其中n为整数的范围,a为起始值 tmp[i] = a + rand() % total; // 将生成的值取已有的值对比,如不同,才保存 found = false; for (int j = 0; j < (int)result.size(); j++) { if (tmp[i] == result[j]) { found = true; break; } } if (!found) { result.push_back(tmp[i]); i++; } if (i >= n) { break; } } return 0; }
本月对 delphi 工程进行了一次维护,效率较低且无甚好解决方案。一是必须在虚拟机 xp 中使用固定 IDE 进行界面编辑和工程编译;二是 xp 的 IDE 不好用;三是资料较少(年代久远);四是工程大部分用法为旧式,一时难以理解;五是历经廿载的积累及若干代工程师的维护,在搜索代码时,不时能看到1998、2008、2016、2019字样,一种厚重的历史感扑面而来。在前辈面前不敢造次,改代码时战战兢兢,生怕行差踏错。由于其有较高的使用价值,因此依然要学习并掌握。