Esempio n. 1
0
 public GenerationManager(PseudoRandomGeneratorType pseudoRandomGeneratorType)
 {
     _validatorFactory            = new HsmmValidatorFactory();
     _jsonModelFactory            = new JsonModelFactory();
     _generatorFactory            = new HsmmGeneratorFactory();
     _pseudoRandomNumberGenerator =
         new PseudoRandomGeneratorFactory().CreatePseudoRandomNumberGenerator(pseudoRandomGeneratorType);
 }
Esempio n. 2
0
        /// <summary>Initializes the <see cref="MklPseudoRandomNumberGenerator" /> class.
        /// </summary>
        static MklPseudoRandomNumberGenerator()
        {
            MCG31    = new MklPseudoRandomNumberGenerator("MCG31_mkl", (int)MagicNumber.MCG31, new MklRandomNumberInitialConditions.Descriptor(), MklResources.MCG31, RandomNumberSequence.SplittingApproach.LeapFrog | RandomNumberSequence.SplittingApproach.SkipAhead);
            R250     = new MklPseudoRandomNumberGenerator("R250_mkl", (int)MagicNumber.R250, new MklRandomNumberInitialConditions.Descriptor(), MklResources.R250);
            MRG32K3A = new MklPseudoRandomNumberGenerator("MRG32K3A_mkl", (int)MagicNumber.MRG32K3A, new MklRandomNumberInitialConditions.Descriptor(), MklResources.MRG32K3A, RandomNumberSequence.SplittingApproach.SkipAhead);
            MCG59    = new MklPseudoRandomNumberGenerator("MCG59_mkl", (int)MagicNumber.MCG59, new MklRandomNumberInitialConditions.Descriptor(), MklResources.MCG59, RandomNumberSequence.SplittingApproach.LeapFrog | RandomNumberSequence.SplittingApproach.SkipAhead);
            MT2203   = new MklPseudoRandomNumberGenerator("MT2203_mkl", (int)MklPseudoRandomNumberGenerator.MagicNumber.MT2203, new MklRandomNumberInitialConditions.Descriptor(), MklResources.MT2203, numberOfSubGenerators: 6024);

            WichmannHill = new MklPseudoRandomNumberGenerator("WichmannHill_mkl", (int)MagicNumber.WH, new MklRandomNumberInitialConditions.Descriptor(), MklResources.WichmannHill, RandomNumberSequence.SplittingApproach.LeapFrog | RandomNumberSequence.SplittingApproach.SkipAhead, numberOfSubGenerators: 273);
            MT19937      = new MklPseudoRandomNumberGenerator("MT19937_mkl", (int)MagicNumber.MT19937, new MklRandomNumberInitialConditions.Descriptor(), MklResources.MT19937);
        }
        /// <summary>Initializes a new instance of the <see cref="MklRandomNumberLibrary" /> class.
        /// </summary>
        public MklRandomNumberLibrary()
        {
            MCG31        = new MklPseudoRandomNumberGenerator("MCG31_mkl", (int)MklPseudoRandomNumberGenerator.MagicNumber.MCG31, new MklRandomNumberInitialConditions.Descriptor(), MklResources.MCG31, RandomNumberSequence.SplittingApproach.LeapFrog | RandomNumberSequence.SplittingApproach.SkipAhead, 1, this);
            R250         = new MklPseudoRandomNumberGenerator("R250_mkl", (int)MklPseudoRandomNumberGenerator.MagicNumber.R250, new MklRandomNumberInitialConditions.Descriptor(), MklResources.R250, RandomNumberSequence.SplittingApproach.None, 1, this);
            MRG32K3A     = new MklPseudoRandomNumberGenerator("MRG32K3A_mkl", (int)MklPseudoRandomNumberGenerator.MagicNumber.MRG32K3A, new MklRandomNumberInitialConditions.Descriptor(), MklResources.MRG32K3A, RandomNumberSequence.SplittingApproach.SkipAhead, 1, this);
            MCG59        = new MklPseudoRandomNumberGenerator("MCG59_mkl", (int)MklPseudoRandomNumberGenerator.MagicNumber.MCG59, new MklRandomNumberInitialConditions.Descriptor(), MklResources.MCG59, RandomNumberSequence.SplittingApproach.LeapFrog | RandomNumberSequence.SplittingApproach.SkipAhead, 1, this);
            WichmannHill = new MklPseudoRandomNumberGenerator("WichmannHill_mkl", (int)MklPseudoRandomNumberGenerator.MagicNumber.WH, new MklRandomNumberInitialConditions.Descriptor(), MklResources.WichmannHill, RandomNumberSequence.SplittingApproach.LeapFrog | RandomNumberSequence.SplittingApproach.SkipAhead, 273, this);
            MT19937      = new MklPseudoRandomNumberGenerator("MT19937_mkl", (int)MklPseudoRandomNumberGenerator.MagicNumber.MT19937, new MklRandomNumberInitialConditions.Descriptor(), MklResources.MT19937, RandomNumberSequence.SplittingApproach.None, 1, this);
            MT2203       = new MklPseudoRandomNumberGenerator("MT2203_mkl", (int)MklPseudoRandomNumberGenerator.MagicNumber.MT2203, new MklRandomNumberInitialConditions.Descriptor(), MklResources.MT2203, RandomNumberSequence.SplittingApproach.None, 6024, this);

            Sobol        = new MklQuasiRandomNumberGenerator("Sobol_mkl", (int)MklQuasiRandomNumberGenerator.MagicNumber.Sobol, new MklRandomNumberInitialConditions.Descriptor(), MklResources.Sobol, RandomNumberSequence.SplittingApproach.LeapFrog | RandomNumberSequence.SplittingApproach.SkipAhead, this);
            Niederreiter = new MklQuasiRandomNumberGenerator("Niederreiter_mkl", (int)MklQuasiRandomNumberGenerator.MagicNumber.Niederreiter, new MklRandomNumberInitialConditions.Descriptor(), MklResources.Niederreiter, RandomNumberSequence.SplittingApproach.LeapFrog | RandomNumberSequence.SplittingApproach.SkipAhead, this);
        }
Esempio n. 4
0
        public IGenerator CreateModelGenerator(IHsmModel model,
                                               IPseudoRandomNumberGenerator pRnGenerator)
        {
            switch (model.Type)
            {
            case ModelType.HsmFergusonModel:
            {
                return(new HsmFergusonModelGenerator((HsmFergusonModel)model, pRnGenerator));
            }

            case ModelType.HsmQpModel:
            {
                return(new HsmQpModelGenerator((HsmQpModel)model, pRnGenerator));
            }

            default:
            {
                throw new NotImplementedException("ModelType is not supported");
            }
            }
        }
Esempio n. 5
0
 public ProbabilityHandler(IPseudoRandomNumberGenerator generator)
 {
     this.generator = generator;
 }
 protected AbstractHsmModelGenerator(T model, IPseudoRandomNumberGenerator pRnGenerator)
 {
     Model = model;
     ProbabilityHandler = new ProbabilityHandler(pRnGenerator);
 }
 public HsmFergusonModelGenerator(HsmFergusonModel model, IPseudoRandomNumberGenerator pRnGenerator) : base(model, pRnGenerator)
 {
 }