/// <summary> Constructor
		/// 
		/// </summary>
		/// <param name="numCondSymbols">the number of conditioning symbols 
		/// </param>
		/// <param name="precision">the  precision to which numeric values are given. For
		/// example, if the precision is stated to be 0.1, the values in the
		/// interval (0.25,0.35] are all treated as 0.3. 
		/// </param>
		public NDConditionalEstimator(int numCondSymbols, double precision)
		{
			
			m_Estimators = new NormalEstimator[numCondSymbols];
			for (int i = 0; i < numCondSymbols; i++)
			{
				m_Estimators[i] = new NormalEstimator(precision);
			}
		}
		/// <summary> Constructor
		/// 
		/// </summary>
		/// <param name="numSymbols">the number of symbols 
		/// </param>
		/// <param name="precision">the  precision to which numeric values are given. For
		/// example, if the precision is stated to be 0.1, the values in the
		/// interval (0.25,0.35] are all treated as 0.3. 
		/// </param>
		public DNConditionalEstimator(int numSymbols, double precision)
		{
			
			m_Estimators = new NormalEstimator[numSymbols];
			for (int i = 0; i < numSymbols; i++)
			{
				m_Estimators[i] = new NormalEstimator(precision);
			}
			m_Weights = new DiscreteEstimator(numSymbols, true);
		}