/// <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); } }