using MathNet.Numerics.Distributions;
using System.Collections;
using System.Collections.Generic;
using MathNet.Numerics.Statistics;
public static void Main()
List<double> dtSet = new List<double>(){ 90, 73, 59, 52, 80, 100, 64, 75, 53, 68, 81, 65, 68, 59, 95, 55, 67, 92, 60, 71, 94, 93, 77, 79, 89, 86, 83, 78};
List<int> reDefinedList = new List<int>();
List<Tuple<int, int, int>> R1List = GetR1BList();
List<Tuple<int, int, int>> R2List = GetR2BList();
double median = MathNet.Numerics.Statistics.Statistics.Median(dtSet);
foreach(double val in dtSet){
int rCount = GetRCount(reDefinedList);
int oneCount = reDefinedList.Where(x => x == 1).Count();
int zeroCount = reDefinedList.Where(x => x == 0).Count();
if(oneCount > 20 || zeroCount > 20){
double ERValue = ((2 * oneCount * zeroCount) / (zeroCount + oneCount)) + 1;
double varR = Math.Sqrt(((2 * oneCount * zeroCount) * ((2 * oneCount * zeroCount) - (oneCount + zeroCount)))/ (Math.Pow(zeroCount + oneCount, 2) * (oneCount + zeroCount - 1)));
double z = (rCount - ERValue) / varR;
if (Math.Abs(z) < zRange){
Console.WriteLine("pass test");
Console.WriteLine("fail test");
int rmin = R1List.Where(x => x.Item1 == oneCount && x.Item2 == zeroCount).First().Item3;
int rmax = R2List.Where(x => x.Item1 == oneCount && x.Item2 == zeroCount).First().Item3;
if(rCount >= rmin && rCount <= rmax){
Console.WriteLine("pass run test");
Console.WriteLine("fail run test");
static int GetRCount(List<int> reDefinedList){
foreach(int val in reDefinedList){
static List<Tuple<int, int, int>> GetR1BList(){
return new List<Tuple<int, int, int>>(){
Tuple.Create(15, 15, 10),
Tuple.Create(16, 14, 10),
Tuple.Create(16, 15, 10),
Tuple.Create(16, 16, 11),
Tuple.Create(17, 13, 10),
Tuple.Create(17, 14, 10),
Tuple.Create(17, 15, 11),
Tuple.Create(17, 16, 11),
Tuple.Create(17, 17, 11),
Tuple.Create(18, 13, 10),
Tuple.Create(18, 14, 10),
Tuple.Create(18, 15, 11),
Tuple.Create(18, 16, 11),
Tuple.Create(18, 17, 12),
Tuple.Create(18, 18, 12),
Tuple.Create(19, 12, 10),
Tuple.Create(19, 13, 10),
Tuple.Create(19, 14, 11),
Tuple.Create(19, 15, 11),
Tuple.Create(19, 16, 12),
Tuple.Create(19, 17, 12),
Tuple.Create(19, 18, 13),
Tuple.Create(19, 19, 13),
Tuple.Create(20, 12, 10),
Tuple.Create(20, 13, 10),
Tuple.Create(20, 14, 11),
Tuple.Create(20, 15, 12),
Tuple.Create(20, 16, 12),
Tuple.Create(20, 17, 13),
Tuple.Create(20, 18, 13),
Tuple.Create(20, 19, 13),
static List<Tuple<int, int, int>> GetR2BList(){
return new List<Tuple<int, int, int>>(){
Tuple.Create(10, 10, 16),
Tuple.Create(11, 10, 17),
Tuple.Create(11, 11, 17),
Tuple.Create(12, 10, 17),
Tuple.Create(12, 11, 18),
Tuple.Create(12, 12, 19),
Tuple.Create(13, 10, 19),
Tuple.Create(13, 11, 19),
Tuple.Create(13, 12, 20),
Tuple.Create(14, 10, 18),
Tuple.Create(14, 11, 19),
Tuple.Create(14, 12, 20),
Tuple.Create(14, 13, 20),
Tuple.Create(14, 14, 21),
Tuple.Create(15, 10, 18),
Tuple.Create(15, 11, 19),
Tuple.Create(15, 12, 20),
Tuple.Create(15, 13, 21),
Tuple.Create(15, 14, 22),
Tuple.Create(15, 15, 22),
Tuple.Create(16, 10, 19),
Tuple.Create(16, 11, 20),
Tuple.Create(16, 12, 21),
Tuple.Create(16, 13, 21),
Tuple.Create(16, 14, 22),
Tuple.Create(16, 15, 23),
Tuple.Create(16, 16, 23),
Tuple.Create(17, 10, 19),
Tuple.Create(17, 11, 20),
Tuple.Create(17, 12, 21),
Tuple.Create(17, 13, 22),
Tuple.Create(17, 14, 23),
Tuple.Create(17, 15, 23),
Tuple.Create(17, 16, 24),
Tuple.Create(17, 17, 25),
Tuple.Create(18, 10, 19),
Tuple.Create(18, 11, 20),
Tuple.Create(18, 12, 21),
Tuple.Create(18, 13, 22),
Tuple.Create(18, 14, 23),
Tuple.Create(18, 15, 24),
Tuple.Create(18, 16, 25),
Tuple.Create(18, 17, 25),
Tuple.Create(18, 18, 26),
Tuple.Create(19, 10, 20),
Tuple.Create(19, 11, 21),
Tuple.Create(19, 12, 22),
Tuple.Create(19, 13, 23),
Tuple.Create(19, 14, 23),
Tuple.Create(19, 15, 24),
Tuple.Create(19, 16, 25),
Tuple.Create(19, 17, 26),
Tuple.Create(19, 18, 26),
Tuple.Create(19, 19, 27),
Tuple.Create(20, 10, 20),
Tuple.Create(20, 11, 21),
Tuple.Create(20, 12, 22),
Tuple.Create(20, 13, 23),
Tuple.Create(20, 14, 24),
Tuple.Create(20, 15, 25),
Tuple.Create(20, 16, 26),
Tuple.Create(20, 17, 26),
Tuple.Create(20, 18, 27),
Tuple.Create(20, 19, 27),