Beispiel #1
0
        public static double ObliczPiWithInnerRandomGeneratorAndLockSection(long ilośćPrób, double pi)
        {
            Random r = new Random(Random.Next() & DateTime.Now.Millisecond);

            long ilośćTrafień = 0;

            for (long i = 0; i < ilośćPrób; ++i)
            {
                if (i == ilośćPrób / 2)
                {
                    lock ((object)pi) //pudełkowanie
                    {
                        OutputProvider.ShowSyncMessage();
                    }
                }
                var x = r.NextDouble();
                var y = r.NextDouble();
                if (x * x + y * y < 1)
                {
                    ++ilośćTrafień;
                }
            }
            return(4.0 * ilośćTrafień / ilośćPrób);
        }