static void Main(string[] args)
        {
            //parameters
            double expiry = 1.0;
            double strike = 50.0;
            double spot = 49.0;

            ParametersConstant vol = new ParametersConstant(0.2);
            ParametersConstant r   = new ParametersConstant(0.01);

            //input number of montecarlo paths
            ulong number_of_paths = 10000;

            //create payoff & option object
            PayOff payoff = new PayOffCall(strike);
            //implicit convert
            VanillaOption option1 = new VanillaOption(payoff, expiry);

            //montecarlo simulation & output result
            StatisticsMC gatherer = new StatisticsMean();
            SimpleMC7.SimpleMonteCarlo4(option1, spot, vol, r, number_of_paths, gatherer);
            double[,] result = gatherer.GetResultsSoFar();
            Console.WriteLine("For the call price, the results are ");
            for (int i = 0; i < result.GetLength(0); i++)
            {
                for (int j = 0; j < result.GetLength(1); j++)
                {
                    Console.WriteLine(result[i, j]);
                }
            }
        }
 public StatisticsMean(StatisticsMean copied)
 {
     this.running_sum_ = copied.running_sum_;
     this.paths_done_ = copied.paths_done_;
 }