'Initialises the population at random.  This type of initialization
can possess clustering, Latin Hypercube sampling is generally better.'

def init_population_random(self):

    rng = self.random_number_generator
    self.population = rng.random_sample(self.population_shape)
    self.population_energies = (np.ones(self.num_population_members) * np.inf)
    self._nfev = 0
