bool Interval::intersect(Interval& i) const{
	if (minimum <= i.getMin() && i.getMin() <= maximum) return true;
	if (minimum <= i.getMax() && i.getMax() <= maximum) return true;
	if (i.getMin() <= minimum && minimum <= i.getMax()) return true;
	if (i.getMin() <= maximum && maximum <= i.getMax()) return true;
	return false;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// randomiseWeights
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void MultiLayerPerceptron::randomiseWeights( const Interval& interval, size_t seed )
{
   RandomNumberGenerator rng( seed );
   for ( size_t i = 0; i < m_weights.size(); ++i )
   {
      for ( size_t j = 0; j < m_weights[ i ].size(); ++j )
      {
         for ( size_t k = 0; k < m_weights[ i ][ j ].size(); ++k )
         {
            m_weights[ i ][ j ][ k ] = rng.uniform( interval.getMin(), interval.getMax() );
         }
      }
   }
}