/// <summary>Creates a new random number stream. /// </summary> /// <param name="initialConditions">Initial conditions for the Random Number Generator; <see cref="IRandomNumberGenerator.InitialConditions"/> serves as factory for initial conditions with respect to the Random Number Generator represented by the current instance.</param> /// <param name="subGeneratorID">A sub-generator ID if a set of similar Random Number Generator is represented by the current instance.</param> /// <returns>The random number stream in its <see cref="AcmlRandomNumberStream"/> representation.</returns> /// <exception cref="ArgumentException">Thrown if <paramref name="initialConditions"/> or <paramref name="subGeneratorID"/> is not suitable for the Random Number Generator represented by the current instance.</exception> public AcmlRandomNumberStream Create(RandomNumberInitialConditions initialConditions, int subGeneratorID) { if (initialConditions == null) { throw new ArgumentNullException(nameof(initialConditions)); } if (initialConditions is AcmlRandomNumberInitialConditions.SingleSeed) { var acmlInitialConditions = initialConditions as AcmlRandomNumberInitialConditions.SingleSeed; return(Create(acmlInitialConditions.Seed, subGeneratorID)); } else if (initialConditions is AcmlRandomNumberInitialConditions.MultiSeed) { var acmlInitialConditions = initialConditions as AcmlRandomNumberInitialConditions.MultiSeed; return(Create(acmlInitialConditions.n, acmlInitialConditions.Seed, subGeneratorID)); } throw new ArgumentException(nameof(initialConditions)); }
/// <summary>Creates a new random number stream. /// </summary> /// <param name="initialConditions">Initial conditions for the Random Number Generator; <see cref="IRandomNumberGenerator.InitialConditions"/> serves as factory for initial conditions with respect to the Random Number Generator represented by the current instance.</param> /// <param name="subGeneratorID">A sub-generator ID if a set of similar Random Number Generator is represented by the current instance.</param> /// <returns>The random number stream in its <see cref="IRandomNumberStream"/> representation.</returns> /// <exception cref="ArgumentException">Thrown if <paramref name="initialConditions"/> or <paramref name="subGeneratorID"/> is not suitable for the Random Number Generator represented by the current instance.</exception> public IRandomNumberStream Create(RandomNumberInitialConditions initialConditions, int subGeneratorID) { if (initialConditions == null) { throw new ArgumentNullException("initialConditions"); } if (initialConditions is MklRandomNumberInitialConditions.SingleSeed) { var mklInitialConditions = initialConditions as MklRandomNumberInitialConditions.SingleSeed; return(Create(mklInitialConditions.Seed, subGeneratorID)); } else if (initialConditions is MklRandomNumberInitialConditions.MultiSeed) { var mklInitialConditions = initialConditions as MklRandomNumberInitialConditions.MultiSeed; return(Create(mklInitialConditions.n, mklInitialConditions.Seed, subGeneratorID)); } throw new ArgumentException("initialConditions"); }
/// <summary>Creates a new random number stream. /// </summary> /// <param name="initialConditions">Initial conditions for the Random Number Generator; <see cref="IRandomNumberGenerator.InitialConditions"/> serves as factory for initial conditions with respect to the Random Number Generator represented by the current instance.</param> /// <param name="subGeneratorID">A sub-generator ID if a set of similar Random Number Generator is represented by the current instance.</param> /// <returns>The random number stream in its <see cref="IRandomNumberStream"/> representation.</returns> /// <exception cref="ArgumentException">Thrown if <paramref name="initialConditions"/> or <paramref name="subGeneratorID"/> is not suitable for the Random Number Generator represented by the current instance.</exception> IRandomNumberStream IPseudoRandomNumberGenerator.Create(RandomNumberInitialConditions initialConditions, int subGeneratorID) { return(Create(initialConditions, subGeneratorID)); }