@@ 1,6 1,6 @@
use nalgebra::SVector;
use rand::{distr::Distribution, Rng};
-use rand_distr::{Normal, NormalError};
+use rand_distr::{uniform, Normal, NormalError, Uniform};
use crate::binary_string::BinaryString;
@@ 46,6 46,15 @@ impl<const LEN: usize> RandomDistributionPerturbation<LEN, rand::rngs::ThreadRng
}
}
+impl<const LEN: usize> RandomDistributionPerturbation<LEN, rand::rngs::ThreadRng, Uniform<f64>> {
+ pub fn uniform(range: f64) -> Result<Self, uniform::Error> {
+ Ok(Self {
+ distribution: Uniform::new(-range/2.0, range/2.0)?,
+ rng: rand::rng()
+ })
+ }
+}
+
impl<TRng: Rng, TDistribution: Distribution<f64>, const LEN: usize> PerturbationOperator for RandomDistributionPerturbation<LEN, TRng, TDistribution> {
type Chromosome = SVector<f64, LEN>;