示例#1
0
        public TwoByTwo SampleFromAlt(int N)
        {
            int    sum  = Sum();
            double pRow = (double)RowSum(true) / sum;
            double pColGivenRowIsTrue  = (double)TT / RowSum(true);
            double pColGivenRowIsFalse = (double)FT / RowSum(false);

            TwoByTwo altTable = TwoByTwo.GetInstance(this.Var1, this.Var2, false);

            for (int i = 0; i < N; i++)
            {
                if (MachineInvariantRandom.GlobalRand.NextDouble() < pRow)
                {
                    altTable.IncrementCell(true, MachineInvariantRandom.GlobalRand.NextDouble() < pColGivenRowIsTrue);
                }
                else
                {
                    altTable.IncrementCell(false, MachineInvariantRandom.GlobalRand.NextDouble() < pColGivenRowIsFalse);
                }
            }
            return(altTable);
        }
示例#2
0
        public TwoByTwo SampleFromNull(int N)
        {
            int    sum  = Sum();
            double p1   = (double)RowSum(true) / sum;
            double p2   = (double)ColSum(true) / sum;
            Random rand = new Random((int)DateTime.Now.Ticks);

            TwoByTwo nullTable = TwoByTwo.GetInstance(this.Var1, this.Var2, false);

            for (int i = 0; i < N; i++)
            {
                nullTable.IncrementCell(MachineInvariantRandom.GlobalRand.NextDouble() < p1, MachineInvariantRandom.GlobalRand.NextDouble() < p2);
            }
            return(nullTable);
        }