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