public static                            NegatedDistribution[] NegateDistributions(IContinuousDistribution[] distributions, double[] lowerBounds, double[] upperBounds)
        {
            NegatedDistribution[] result = new NegatedDistribution[distributions.Length];

            for (int i = 0; i < distributions.Length; i++)
            {
                result[i] = new NegatedDistribution(distributions[i], lowerBounds[i], upperBounds[i]);
            }

            return(result);
        }
        public static                            IDistributionWrapper[] NegateNormalDistributions(Normal[] distributions)
        {
            var    result  = new IDistributionWrapper[distributions.Length];
            double epsilon = Math.Pow(2, -52);

            for (int i = 0; i < distributions.Length; i++)
            {
                result[i] = new NegatedDistribution(distributions[i], distributions[i].InverseCumulativeDistribution(epsilon), distributions[i].InverseCumulativeDistribution(1 - epsilon));
                //-distributions[i].Mean, distributions[i].StdDev, distributions[i].RandomSource);
            }
            return(result);
        }