27 uint bitCrsFirst = state_->getRandomizer()->getRandomInteger(p1->getNumBits());
28 uint bitCrsSecond, tmp;
31 bitCrsSecond = state_->getRandomizer()->getRandomInteger(p1->getNumBits());
32 }
while (bitCrsFirst==bitCrsSecond);
34 if (bitCrsFirst>bitCrsSecond)
37 bitCrsFirst=bitCrsSecond;
41 for (uint dimension = 0; dimension < p1->variables.size(); dimension++) {
42 switch (state_->getRandomizer()->getRandomInteger(0, 1)) {
43 case 0:
for (uint i = 0; i < bitCrsFirst; i++) {
44 ch->variables[dimension][i] = p1->variables[dimension][i];
46 for (uint i = bitCrsFirst; i < bitCrsSecond; i++) {
47 ch->variables[dimension][i] = p2->variables[dimension][i];
49 for (uint i = bitCrsSecond; i < p1->getNumBits(); i++) {
50 ch->variables[dimension][i] = p1->variables[dimension][i];
53 case 1:
for (uint i = 0; i < bitCrsFirst; i++) {
54 ch->variables[dimension][i] = p2->variables[dimension][i];
56 for (uint i = bitCrsFirst; i < bitCrsSecond; i++) {
57 ch->variables[dimension][i] = p1->variables[dimension][i];
59 for (uint i = bitCrsSecond; i < p2->getNumBits(); i++) {
60 ch->variables[dimension][i] = p2->variables[dimension][i];