Example #1
0
        static void Main(string[] args)
        {
            List <Node> nodes  = new List <Node>();
            Node        Alaska = new Node("Alaska");

            nodes.Add(Alaska);
            Node Alberta = new Node("Alberta");

            nodes.Add(Alberta);
            Node CentralAmerica = new Node("CentralAmerica");

            nodes.Add(CentralAmerica);
            Node EasternUnitedStates = new Node("EasternUnitedStates");

            nodes.Add(EasternUnitedStates);
            Node GreenLand = new Node("GreenLand");

            nodes.Add(GreenLand);
            Node NorthwestTerritory = new Node("NorthwestTerritory");

            nodes.Add(NorthwestTerritory);
            Node Ontario = new Node("Ontario");

            nodes.Add(Ontario);
            Node Quebec = new Node("Quebec");

            nodes.Add(Quebec);
            Node WesternUnitedStates = new Node("WesternUnitedStates");

            nodes.Add(WesternUnitedStates);
            Node Argentina = new Node("Argentina");

            nodes.Add(Argentina);
            Node Brazil = new Node("Brazil");

            nodes.Add(Brazil);
            Node Peru = new Node("Peru");

            nodes.Add(Peru);
            Node Venezuela = new Node("Venezuela");

            nodes.Add(Venezuela);
            Node GreatBritain = new Node("GreatBritain");

            nodes.Add(GreatBritain);
            Node Iceland = new Node("Iceland");

            nodes.Add(Iceland);
            Node NorthernEurope = new Node("NorthernEurope");

            nodes.Add(NorthernEurope);
            Node Scandanavia = new Node("Scandanavia");

            nodes.Add(Scandanavia);
            Node SouthernEurope = new Node("SouthernEurope");

            nodes.Add(SouthernEurope);
            Node Ukraine = new Node("Ukraine");

            nodes.Add(Ukraine);
            Node WesternEurope = new Node("WesternEurope");

            nodes.Add(WesternEurope);
            Node Congo = new Node("Congo");

            nodes.Add(Congo);
            Node EastAfrica = new Node("EastAfrica");

            nodes.Add(EastAfrica);
            Node Egypt = new Node("Egypt");

            nodes.Add(Egypt);
            Node Madagascar = new Node("Madagascar");

            nodes.Add(Madagascar);
            Node NorthAfrica = new Node("NorthAfrica");

            nodes.Add(NorthAfrica);
            Node SouthAfrica = new Node("SouthAfrica");

            nodes.Add(SouthAfrica);
            Node Afghanistan = new Node("Afghanistan");

            nodes.Add(Afghanistan);
            Node China = new Node("China");

            nodes.Add(China);
            Node India = new Node("India");

            nodes.Add(India);
            Node Irkutsk = new Node("Irkutsk");

            nodes.Add(Irkutsk);
            Node Japan = new Node("Japan");

            nodes.Add(Japan);
            Node Kamchatka = new Node("Kamchatka");

            nodes.Add(Kamchatka);
            Node MiddleEast = new Node("MiddleEast");

            nodes.Add(MiddleEast);
            Node Mongolia = new Node("Mongolia");

            nodes.Add(Mongolia);
            Node Siam = new Node("Siam");

            nodes.Add(Siam);
            Node Siberia = new Node("Siberia");

            nodes.Add(Siberia);
            Node Ural = new Node("Ural");

            nodes.Add(Ural);
            Node Yakutsk = new Node("Yakutsk");

            nodes.Add(Yakutsk);
            Node EasternAustralia = new Node("EasternAustralia");

            nodes.Add(EasternAustralia);
            Node Indonesia = new Node("Indonesia");

            nodes.Add(Indonesia);
            Node NewGuinea = new Node("NewGuinea");

            nodes.Add(NewGuinea);
            Node WesternAustralia = new Node("WesternAustralia");

            nodes.Add(WesternAustralia);
            Alaska.edges.Add(new Edge(Alaska, Kamchatka));
            Alaska.edges.Add(new Edge(Alaska, NorthwestTerritory));
            Alaska.edges.Add(new Edge(Alaska, Alberta));
            NorthwestTerritory.edges.Add(new Edge(NorthwestTerritory, Alaska));
            NorthwestTerritory.edges.Add(new Edge(NorthwestTerritory, Alberta));
            NorthwestTerritory.edges.Add(new Edge(NorthwestTerritory, Ontario));
            NorthwestTerritory.edges.Add(new Edge(NorthwestTerritory, GreenLand));
            Alberta.edges.Add(new Edge(Alberta, Alaska));
            Alberta.edges.Add(new Edge(Alberta, NorthwestTerritory));
            Alberta.edges.Add(new Edge(Alberta, Ontario));
            Alberta.edges.Add(new Edge(Alberta, WesternAustralia));
            Ontario.edges.Add(new Edge(Ontario, Alberta));
            Ontario.edges.Add(new Edge(Ontario, NorthwestTerritory));
            Ontario.edges.Add(new Edge(Ontario, Quebec));
            Ontario.edges.Add(new Edge(Ontario, WesternUnitedStates));
            Ontario.edges.Add(new Edge(Ontario, EasternUnitedStates));
            Ontario.edges.Add(new Edge(Ontario, GreenLand));
            Quebec.edges.Add(new Edge(Quebec, Ontario));
            Quebec.edges.Add(new Edge(Quebec, EasternUnitedStates));
            Quebec.edges.Add(new Edge(Quebec, GreenLand));
            GreenLand.edges.Add(new Edge(GreenLand, Ontario));
            GreenLand.edges.Add(new Edge(GreenLand, NorthwestTerritory));
            GreenLand.edges.Add(new Edge(GreenLand, Quebec));
            GreenLand.edges.Add(new Edge(GreenLand, Iceland));
            WesternUnitedStates.edges.Add(new Edge(WesternUnitedStates, Alberta));
            WesternUnitedStates.edges.Add(new Edge(WesternUnitedStates, Ontario));
            WesternUnitedStates.edges.Add(new Edge(WesternUnitedStates, EasternUnitedStates));
            WesternUnitedStates.edges.Add(new Edge(WesternUnitedStates, CentralAmerica));
            EasternUnitedStates.edges.Add(new Edge(EasternUnitedStates, WesternUnitedStates));
            EasternUnitedStates.edges.Add(new Edge(EasternUnitedStates, Quebec));
            EasternUnitedStates.edges.Add(new Edge(EasternUnitedStates, Ontario));
            EasternUnitedStates.edges.Add(new Edge(EasternUnitedStates, CentralAmerica));
            CentralAmerica.edges.Add(new Edge(CentralAmerica, WesternUnitedStates));
            CentralAmerica.edges.Add(new Edge(CentralAmerica, EasternUnitedStates));
            CentralAmerica.edges.Add(new Edge(CentralAmerica, Venezuela));
            Venezuela.edges.Add(new Edge(Venezuela, CentralAmerica));
            Venezuela.edges.Add(new Edge(Venezuela, Peru));
            Venezuela.edges.Add(new Edge(Venezuela, Brazil));
            Peru.edges.Add(new Edge(Peru, Venezuela));
            Peru.edges.Add(new Edge(Peru, Brazil));
            Peru.edges.Add(new Edge(Peru, Argentina));
            Brazil.edges.Add(new Edge(Brazil, Peru));
            Brazil.edges.Add(new Edge(Brazil, Argentina));
            Brazil.edges.Add(new Edge(Brazil, NorthAfrica));
            Argentina.edges.Add(new Edge(Argentina, Brazil));
            Argentina.edges.Add(new Edge(Argentina, Peru));
            NorthAfrica.edges.Add(new Edge(NorthAfrica, Brazil));
            NorthAfrica.edges.Add(new Edge(NorthAfrica, WesternEurope));
            NorthAfrica.edges.Add(new Edge(NorthAfrica, SouthernEurope));
            NorthAfrica.edges.Add(new Edge(NorthAfrica, Egypt));
            NorthAfrica.edges.Add(new Edge(NorthAfrica, EastAfrica));
            NorthAfrica.edges.Add(new Edge(NorthAfrica, Congo));
            Egypt.edges.Add(new Edge(Egypt, NorthAfrica));
            Egypt.edges.Add(new Edge(Egypt, SouthernEurope));
            Egypt.edges.Add(new Edge(Egypt, EastAfrica));
            Egypt.edges.Add(new Edge(Egypt, MiddleEast));
            EastAfrica.edges.Add(new Edge(EastAfrica, Egypt));
            EastAfrica.edges.Add(new Edge(EastAfrica, MiddleEast));
            EastAfrica.edges.Add(new Edge(EastAfrica, Congo));
            EastAfrica.edges.Add(new Edge(EastAfrica, SouthAfrica));
            EastAfrica.edges.Add(new Edge(EastAfrica, Madagascar));
            SouthAfrica.edges.Add(new Edge(SouthAfrica, EastAfrica));
            SouthAfrica.edges.Add(new Edge(SouthAfrica, Congo));
            SouthAfrica.edges.Add(new Edge(SouthAfrica, Madagascar));
            Madagascar.edges.Add(new Edge(Madagascar, SouthAfrica));
            Madagascar.edges.Add(new Edge(Madagascar, EastAfrica));
            Congo.edges.Add(new Edge(Congo, SouthAfrica));
            Congo.edges.Add(new Edge(Congo, EastAfrica));
            Congo.edges.Add(new Edge(Congo, NorthAfrica));
            WesternEurope.edges.Add(new Edge(WesternEurope, NorthAfrica));
            WesternEurope.edges.Add(new Edge(WesternEurope, NorthernEurope));
            WesternEurope.edges.Add(new Edge(WesternEurope, SouthernEurope));
            NorthernEurope.edges.Add(new Edge(NorthernEurope, SouthernEurope));
            NorthernEurope.edges.Add(new Edge(NorthernEurope, WesternEurope));
            NorthernEurope.edges.Add(new Edge(NorthernEurope, Ukraine));
            NorthernEurope.edges.Add(new Edge(NorthernEurope, GreatBritain));
            NorthernEurope.edges.Add(new Edge(NorthernEurope, Scandanavia));
            SouthernEurope.edges.Add(new Edge(SouthernEurope, NorthernEurope));
            SouthernEurope.edges.Add(new Edge(SouthernEurope, WesternEurope));
            SouthernEurope.edges.Add(new Edge(SouthernEurope, Ukraine));
            SouthernEurope.edges.Add(new Edge(SouthernEurope, NorthAfrica));
            SouthernEurope.edges.Add(new Edge(SouthernEurope, MiddleEast));
            SouthernEurope.edges.Add(new Edge(SouthernEurope, Egypt));
            Ukraine.edges.Add(new Edge(Ukraine, SouthernEurope));
            Ukraine.edges.Add(new Edge(Ukraine, NorthernEurope));
            Ukraine.edges.Add(new Edge(Ukraine, Scandanavia));
            Ukraine.edges.Add(new Edge(Ukraine, MiddleEast));
            Ukraine.edges.Add(new Edge(Ukraine, Afghanistan));
            Ukraine.edges.Add(new Edge(Ukraine, Ural));
            Scandanavia.edges.Add(new Edge(Scandanavia, Ukraine));
            Scandanavia.edges.Add(new Edge(Scandanavia, NorthernEurope));
            Scandanavia.edges.Add(new Edge(Scandanavia, Iceland));
            Scandanavia.edges.Add(new Edge(Scandanavia, GreatBritain));
            GreatBritain.edges.Add(new Edge(GreatBritain, Scandanavia));
            GreatBritain.edges.Add(new Edge(GreatBritain, Iceland));
            GreatBritain.edges.Add(new Edge(GreatBritain, NorthernEurope));
            Iceland.edges.Add(new Edge(Iceland, GreatBritain));
            Iceland.edges.Add(new Edge(Iceland, Scandanavia));
            Iceland.edges.Add(new Edge(Iceland, GreenLand));
            MiddleEast.edges.Add(new Edge(MiddleEast, EastAfrica));
            MiddleEast.edges.Add(new Edge(MiddleEast, Egypt));
            MiddleEast.edges.Add(new Edge(MiddleEast, Ukraine));
            MiddleEast.edges.Add(new Edge(MiddleEast, SouthernEurope));
            MiddleEast.edges.Add(new Edge(MiddleEast, Afghanistan));
            MiddleEast.edges.Add(new Edge(MiddleEast, India));
            India.edges.Add(new Edge(India, MiddleEast));
            India.edges.Add(new Edge(India, Afghanistan));
            India.edges.Add(new Edge(India, China));
            India.edges.Add(new Edge(India, Siam));
            Siam.edges.Add(new Edge(Siam, India));
            Siam.edges.Add(new Edge(Siam, China));
            Siam.edges.Add(new Edge(Siam, Indonesia));
            China.edges.Add(new Edge(China, India));
            China.edges.Add(new Edge(China, Siam));
            China.edges.Add(new Edge(China, Afghanistan));
            China.edges.Add(new Edge(China, Ural));
            China.edges.Add(new Edge(China, Siberia));
            China.edges.Add(new Edge(China, Mongolia));
            Afghanistan.edges.Add(new Edge(Afghanistan, China));
            Afghanistan.edges.Add(new Edge(Afghanistan, MiddleEast));
            Afghanistan.edges.Add(new Edge(Afghanistan, Ukraine));
            Afghanistan.edges.Add(new Edge(Afghanistan, India));
            Afghanistan.edges.Add(new Edge(Afghanistan, Ural));
            Ural.edges.Add(new Edge(Ural, Afghanistan));
            Ural.edges.Add(new Edge(Ural, Ukraine));
            Ural.edges.Add(new Edge(Ural, Siberia));
            Ural.edges.Add(new Edge(Ural, China));
            Siberia.edges.Add(new Edge(Siberia, Ural));
            Siberia.edges.Add(new Edge(Siberia, Yakutsk));
            Siberia.edges.Add(new Edge(Siberia, Irkutsk));
            Siberia.edges.Add(new Edge(Siberia, Mongolia));
            Siberia.edges.Add(new Edge(Siberia, China));
            Mongolia.edges.Add(new Edge(Mongolia, Siberia));
            Mongolia.edges.Add(new Edge(Mongolia, China));
            Mongolia.edges.Add(new Edge(Mongolia, Irkutsk));
            Mongolia.edges.Add(new Edge(Mongolia, Kamchatka));
            Mongolia.edges.Add(new Edge(Mongolia, Japan));
            Irkutsk.edges.Add(new Edge(Irkutsk, Mongolia));
            Irkutsk.edges.Add(new Edge(Irkutsk, Siberia));
            Irkutsk.edges.Add(new Edge(Irkutsk, Yakutsk));
            Irkutsk.edges.Add(new Edge(Irkutsk, Kamchatka));
            Yakutsk.edges.Add(new Edge(Yakutsk, Irkutsk));
            Yakutsk.edges.Add(new Edge(Yakutsk, Siberia));
            Yakutsk.edges.Add(new Edge(Yakutsk, Kamchatka));
            Japan.edges.Add(new Edge(Japan, Mongolia));
            Japan.edges.Add(new Edge(Japan, Kamchatka));
            Kamchatka.edges.Add(new Edge(Kamchatka, Japan));
            Kamchatka.edges.Add(new Edge(Kamchatka, Mongolia));
            Kamchatka.edges.Add(new Edge(Kamchatka, Irkutsk));
            Kamchatka.edges.Add(new Edge(Kamchatka, Yakutsk));
            Kamchatka.edges.Add(new Edge(Kamchatka, Alaska));
            Indonesia.edges.Add(new Edge(Indonesia, Siam));
            Indonesia.edges.Add(new Edge(Indonesia, NewGuinea));
            Indonesia.edges.Add(new Edge(Indonesia, WesternAustralia));
            NewGuinea.edges.Add(new Edge(NewGuinea, Indonesia));
            NewGuinea.edges.Add(new Edge(NewGuinea, WesternAustralia));
            NewGuinea.edges.Add(new Edge(NewGuinea, EasternAustralia));
            WesternAustralia.edges.Add(new Edge(WesternAustralia, EasternAustralia));
            WesternAustralia.edges.Add(new Edge(WesternAustralia, Indonesia));
            WesternAustralia.edges.Add(new Edge(WesternAustralia, NewGuinea));
            EasternAustralia.edges.Add(new Edge(EasternAustralia, WesternAustralia));
            WesternAustralia.edges.Add(new Edge(WesternAustralia, NewGuinea));

            Random r = new Random();

            Node currentNode = nodes[r.Next(nodes.Count)];

            for (long i = 0; i < 1000000; i++)
            {
                if (r.Next(6) == 6)
                {
                    currentNode = nodes[r.Next(nodes.Count)];
                }
                else
                {
                    currentNode = currentNode.RandomTravel();
                    currentNode.count++;
                }
            }

            foreach (Node n in nodes)
            {
                Console.WriteLine(n.label + ": " + ((double)n.count) / 10000 + "%");
            }
            Console.ReadLine();
        }