docs: public int rouletteWheel(BoundedRandomGenerator<Double> randomGenerator) {
      //Calculate the inverse sum
      double inverseSum = 0.0;
      for (int hypercube : hypercubes) {
        if (hypercube > 0) {
          inverseSum += 1.0 / (double) hypercube;
        }
      }
  
      //Calculate a random value between 0 and sumaInversa
      double random = randomGenerator.getRandomValue(0.0, inverseSum);
      int hypercube = 0;
      double accumulatedSum = 0.0;
      while (hypercube < hypercubes.length) {
        if (hypercubes[hypercube] > 0) {
          accumulatedSum += 1.0 / (double) hypercubes[hypercube];
        }
  
        if (accumulatedSum > random) {
          return hypercube;
        }
  
        hypercube++;
      }
  
      return hypercube;
    }