29 std::vector<int> selectedNum;
30 std::map<int, int> numSelected;
32 int index, selectedIndex, currentIndex;
34 int rand = state_->getRandomizer()->getRandomInteger(p1->getSize()+1);
36 selectedNum.resize(rand);
38 for (
int i = 0; i < (int) selectedNum.size(); i++) {
40 while (numSelected[p1->variables[index]]) {
44 selectedIndex = state_->getRandomizer()->getRandomInteger(p1->getSize()- i);
46 while ((index < (
int) p1->getSize()) && (currentIndex != selectedIndex)) {
48 if (!numSelected[p1->variables[index]]) {
52 numSelected[p1->variables[index]] = 1;
56 for (
int i = 0; i < (int) p1->getSize(); i++) {
57 if (numSelected[p1->variables[i]]) {
58 selectedNum[index] = p1->variables[i];
64 for (
int i = 0; i < (int) p1->getSize(); i++) {
65 if (numSelected[p2->variables[i]]) {
66 ch->variables[i] = selectedNum[index];
69 ch->variables[i] = p2->variables[i];