private float Inheritance(double min, double max, double mode,
                                  double noise, Random rand)
        {
            //Get noise around inheritance using triangular ditribution
            double     Max          = Math.Min(mode + noise, max);
            double     Min          = Math.Max(mode - noise, min);
            BetaScaled Distribution = BetaScaled.PERT(Min, Max, mode, rand);

            return((float)Distribution.Sample());
        }
 //Functions for birth
 private float[] InitialDistributions(SimParams par, float noise, float initial, float max, float min)
 {
     float[] DistArray = new float[par.NumBirds];
     if (noise != 0)
     {
         float      Max  = Math.Min(initial + noise, max);
         float      Min  = Math.Max(initial - noise, min);
         BetaScaled Dist = BetaScaled.PERT(Min, Max, initial, par.Rand);
         for (int i = 0; i < par.NumBirds; i++)
         {
             DistArray[i] = (float)Dist.Sample();
         }
     }
     else
     {
         DistArray = Enumerable.Repeat(initial, par.NumBirds).ToArray();
     }
     return(DistArray);
 }
Example #3
0
 public void Initialize(Tuple <object, object, object> data)
 {
     export            = data;
     this.Distribution = BetaScaled.PERT((double)data.Item1, (double)data.Item2, (double)data.Item3);
 }
Example #4
0
 public BetaPertDistribution(double min, double max, double mostLikely)
 {
     this.Distribution = BetaScaled.PERT(min, max, mostLikely);
     export            = new Tuple <object, object, object>(min, max, mostLikely);
 }