public double RandomDouble(ConstraintRange <double> constraint) => (random.NextDouble() * (constraint.Max - constraint.Min)) + constraint.Min;
public int RandomInteger(ConstraintRange <int> constraint) => random.Next(constraint.Min, constraint.Max);