25 uint dimension = state_->getRandomizer()->getRandomInteger((uint) bin->variables.size());
28 uint bitIndexSmaller = state_->getRandomizer()->getRandomInteger((uint) bin->getNumBits());
31 bitIndexBigger = state_->getRandomizer()->getRandomInteger((uint) bin->getNumBits());
32 }
while(bitIndexBigger == bitIndexSmaller);
34 uint tmp = bitIndexSmaller;
35 if(bitIndexSmaller > bitIndexBigger) {
36 bitIndexSmaller = bitIndexBigger;
44 for(uint i = bitIndexSmaller; i <= bitIndexBigger; i++) {
45 if(bin->variables[dimension][i]) counter1++;
49 int fairness0 = counter0;
50 int fairness1 = counter1;
53 for(uint i = bitIndexSmaller; i <= bitIndexBigger; i++) {
54 int random = state_->getRandomizer()->getRandomInteger(1, fairness0 + fairness1);
55 if(random <= fairness1) {
57 bin->variables[dimension][i] =
true;
61 bin->variables[dimension][i] =
false;
67 bin->variables[dimension][i] =
false;
71 bin->variables[dimension][i] =
true;