Exemple #1
0
        /// <summary>
        /// Updates the helper variables that store intermediate results for generation of t-distributed random
        ///   numbers.
        /// </summary>
        public void Initialize(double nu)
        {
            if (!IsValidNu(nu))
            {
                throw new ArgumentOutOfRangeException("Nu out of range (must be positive");
            }

            this.nu = nu;
            if (null == chiSquareDistribution)
            {
                chiSquareDistribution = new ChiSquareDistribution(nu);
            }
            else
            {
                chiSquareDistribution.Alpha = this.nu;
            }
        }
        /// <summary>
        /// Updates the helper variables that store intermediate results for generation of Fisher-Snedecor distributed random
        ///   numbers.
        /// </summary>
        private void UpdateHelpers()
        {
            if (null == chiSquareDistributionAlpha)
            {
                chiSquareDistributionAlpha = new ChiSquareDistribution(alpha, generator);
            }
            else
            {
                chiSquareDistributionAlpha.Alpha = alpha;
            }

            if (null == chiSquareDistributionBeta)
            {
                chiSquareDistributionBeta = new ChiSquareDistribution(beta, generator);
            }
            else
            {
                chiSquareDistributionBeta.Alpha = beta;
            }

            helper1 = beta / alpha;
        }
   FDistribution (double numf, double denomf, RandomGenerator ran)
     : base(ran)
   { 
     // check parameter range
     if (numf < 0.0 || denomf < 0.0)
       throw new ArgumentException(string.Format("Numerator ({0}) and denominator ({1}) degrees of freedom must be positive", numf, denomf));
 
     // store parameters
     NF = numf; 
     DF = denomf; 
 
     // initialize numerator and denominator chi-square distributions
     NumChi2 = new ChiSquareDistribution(NF,ran);
     DenomChi2 = new ChiSquareDistribution(DF,ran);
   }
		/// <summary>
		/// Updates the helper variables that store intermediate results for generation of t-distributed random
		///   numbers.
		/// </summary>
		public void Initialize(double nu)
		{
			if (!IsValidNu(nu))
				throw new ArgumentOutOfRangeException("Nu out of range (must be positive");

			this.nu = nu;
			if (null == chiSquareDistribution)
				this.chiSquareDistribution = new ChiSquareDistribution(nu);
			else
				this.chiSquareDistribution.Alpha = this.nu;
		}
		/// <summary>
		/// Updates the helper variables that store intermediate results for generation of Fisher-Snedecor distributed random
		///   numbers.
		/// </summary>
		private void UpdateHelpers()
		{
			if (null == this.chiSquareDistributionAlpha)
				this.chiSquareDistributionAlpha = new ChiSquareDistribution(alpha, generator);
			else
				this.chiSquareDistributionAlpha.Alpha = this.alpha;

			if (null == this.chiSquareDistributionBeta)
				this.chiSquareDistributionBeta = new ChiSquareDistribution(beta, generator);
			else
				this.chiSquareDistributionBeta.Alpha = this.beta;

			this.helper1 = (double)this.beta / (double)this.alpha;
		}
		public void TestChiSquareDistribution()
		{
			double[][] para = {
new double[]{7, 0, 4.254852183546515743793886, 0.1183315591713442321707384, 14.06714044934016874262697, 0.0174057454954412176379300}
      };
			for (int i = 0; i < para.Length; i++)
			{
				ContDistTester tester = new ContDistTester(para[i], delegate(double a, double b)
				{
					ChiSquareDistribution ret = new ChiSquareDistribution();
					ret.Alpha = (int)a;
					return ret;
				}
					);
				tester.Test(1E-14);
			}
		}