double Sample(LocalRandom random) { // NOTE: don't use an interface and OO to select, makes JSON serialization a big mess switch (RateDistribution) { case RateDistribution.NormalDistribution: return(NormalDistribution.Sample(random, Parameters[0], Parameters[1])); case RateDistribution.LaplaceDistribution: return(LaplaceDistribution.Sample(random, Parameters[0], Parameters[1])); case RateDistribution.InflationModel: return(InflationModel.Sample(random)); case RateDistribution.StockModel: return(StockModel.Sample(random)); default: throw new NotImplementedException("Unknown RateType in Rate.Sample"); } }