def Sample(self, dimensions, SamplingParam, Kind):
        """
        Generate a sample from some distribution

        Args:
            dimensions (int): Number of dimensions
            SamplingParam (list): Parameter to use on distribution
            Kind (str): Name of distribution

        Returns:
            None
        """
        if (Kind == "Simplex"):
            # Output: Simplex sample of length 'dimensions' (Adds to 1)
            sample = -np.log(np.random.rand(dimensions))
            return sample / sum(sample)
        if (Kind == "IntegerUniform"):
            return np.round(np.random.rand(dimensions) * SamplingParam[0])
        if (Kind == "ScaledUniform"):
            return np.random.rand(dimensions) * SamplingParam[0]
        if (Kind == "Gaussian"):
            return np.random.normal(SamplingParam[0], SamplingParam[1], dimensions)
        if (Kind == "Exponential"):
            return [np.random.exponential(SamplingParam[0]) for j in range(dimensions)]
        if (Kind == "Constant"):
            return [0.5 * SamplingParam[0]] * dimensions
        if (Kind == "Beta"):
            return [np.random.beta(SamplingParam[0], SamplingParam[1]) for i in range(dimensions)]
        if (Kind == "Empirical"):
            return [random.choice(SamplingParam) for i in range(dimensions)]
        if (Kind == "PartialUniform"):
            # Generate random samples and scale them by the first parameter.
            samples = np.random.rand(dimensions) * SamplingParam[0]
            # Now iterate over the sampling parameters and push in static
            # values.
            for i in range(1, len(SamplingParam)):
                if SamplingParam[i] != -1:
                    samples[i - 1] = SamplingParam[i]
            return samples
        if (Kind == "PartialGaussian"):
            # Generate random gaussian samples.
            samples = np.random.normal(
                SamplingParam[0], SamplingParam[1], dimensions)
            # Now iterate over the sampling parameters and push in static
            # values.
            for i in range(2, len(SamplingParam)):
                if SamplingParam[i] != -1:
                    samples[i - 2] = SamplingParam[i]
            samples = [0 if i < 0 else i for i in samples]
            return samples