std::vector<double> OptimizerNaive::generateRandomPoint(const ObjectiveFunction & objective_function) const
{
    static RandomNumberGenerator random_generator(0., 1.);

    std::vector<double> dmin = objective_function.getDomainMin();
    std::vector<double> dmax = objective_function.getDomainMax();
    int x_dim = objective_function.getDimension();

    std::vector<double> x;
    for(int i=0 ; i<x_dim ; i++) {
        x.push_back(random_generator.generateNumber() * (dmax[i] - dmin[i]) + dmin[i]); // TODO denormalize in dmin dmax
    }
    
    return x;
}