From 84762f7109c11410af8f0c41dcb80710a83af566 Mon Sep 17 00:00:00 2001 From: Marcus Cuda Date: Sat, 18 Sep 2010 17:52:51 +0800 Subject: [PATCH] merged andriy's XOR RNG --- src/Numerics/Numerics.csproj | 1 + src/Numerics/Random/Xorshift.cs | 146 ++++++++++++++++++ src/Silverlight/Silverlight.csproj | 3 + .../CommonDistributionTests.cs | 2 +- .../Multivariate/MatrixNormalTests.cs | 4 - .../Multivariate/NormalGammaTests.cs | 2 +- .../Complex/MatrixLoader.cs | 12 +- .../Complex32/MatrixLoader.cs | 12 +- .../LinearAlgebraTests/Double/MatrixLoader.cs | 12 +- .../LinearAlgebraTests/Single/MatrixLoader.cs | 12 +- src/UnitTests/Random/Mcg31m1Tests.cs | 6 +- src/UnitTests/Random/Mcg59Tests.cs | 4 +- src/UnitTests/Random/MersenneTwisterTests.cs | 4 +- src/UnitTests/Random/Mrg32k3aTests.cs | 4 +- src/UnitTests/Random/RandomTests.cs | 4 +- src/UnitTests/Random/SystemCryptoTests.cs | 4 +- .../Random/SystemRandomExtensionTests.cs | 4 +- src/UnitTests/Random/WH1982Tests.cs | 4 +- src/UnitTests/Random/WH2006Tests.cs | 4 +- src/UnitTests/Random/XorshiftTests.cs | 44 ++++++ src/UnitTests/SortingTests.cs | 8 +- .../MetropolisHastingsSamplerTests.cs | 2 +- .../MCMCTests/MetropolisSamplerTests.cs | 2 +- .../MCMCTests/RejectionSamplerTests.cs | 2 +- src/UnitTests/UnitTests.csproj | 1 + 25 files changed, 247 insertions(+), 56 deletions(-) create mode 100644 src/Numerics/Random/Xorshift.cs create mode 100644 src/UnitTests/Random/XorshiftTests.cs diff --git a/src/Numerics/Numerics.csproj b/src/Numerics/Numerics.csproj index 3857f491..6dc74557 100644 --- a/src/Numerics/Numerics.csproj +++ b/src/Numerics/Numerics.csproj @@ -353,6 +353,7 @@ + diff --git a/src/Numerics/Random/Xorshift.cs b/src/Numerics/Random/Xorshift.cs new file mode 100644 index 00000000..8e56a4fd --- /dev/null +++ b/src/Numerics/Random/Xorshift.cs @@ -0,0 +1,146 @@ +// +// Math.NET Numerics, part of the Math.NET Project +// http://numerics.mathdotnet.com +// http://github.com/mathnet/mathnet-numerics +// http://mathnetnumerics.codeplex.com +// +// Copyright (c) 2009-2010 Math.NET +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following +// conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// +namespace MathNet.Numerics.Random +{ + using System; + + /// + /// Xor-shift pseudo random number generator (RNG) specified in Marsaglia, George. (2003). Xorshift RNGs. + /// http://www.jstatsoft.org/v08/i14/xorshift.pdf + /// + public class Xorshift : AbstractRandomNumberGenerator + { + /// + /// Initializes a new instance of the class using + /// the current time as the seed. + /// + /// If the seed value is zero, it is set to one. Uses the + /// value of to + /// set whether the instance is thread safe. + public Xorshift() : this((int)DateTime.Now.Ticks) + { + } + + /// + /// Initializes a new instance of the class using + /// the current time as the seed. + /// + /// if set to true , the class is thread safe. + public Xorshift(bool threadSafe) : this((int)DateTime.Now.Ticks, threadSafe) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// The seed value. + /// If the seed value is zero, it is set to one. Uses the + /// value of to + /// set whether the instance is thread safe. + public Xorshift(int seed) : this(seed, Control.ThreadSafeRandomNumberGenerators) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// The seed value. + /// if set to true, the class is thread safe. + public Xorshift(int seed, bool threadSafe) : base(threadSafe) + { + if (seed == 0) + { + seed = 1; + } + + _x = (uint)seed; + _y = YSeed; + _z = ZSeed; + _w = WSeed; + } + + /// + /// Y seed is 423864282. + /// + private const uint YSeed = 423864282; + + /// + /// Y seed is 643534723. + /// + private const uint ZSeed = 643534723; + + /// + /// W seed is 84452734. + /// + private const uint WSeed = 84452734; + + /// + /// The multiplier to compute a double-precision floating point number [0, 1) + /// + private const double IntToDoubleMultiplier = 1.0 / (int.MaxValue + 1.0); + + /// + /// Seed or last but three unsigned random number. + /// + private uint _x; + + /// + /// Last but two unsigned random number. + /// + private uint _y; + + /// + /// Last but one unsigned random number. + /// + private uint _z; + + /// + /// Last generated unsigned random number. + /// + private uint _w; + + /// + /// Returns a random number between 0.0 and 1.0. + /// + /// + /// A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + /// + protected override double DoSample() + { + var t = _x ^ (_x << 11); + _x = _y; + _y = _z; + _z = _w; + _w = (_w ^ (_w >> 19)) ^ (t ^ (t >> 8)); + + return (int)(_w >> 1) * IntToDoubleMultiplier; + } + } +} diff --git a/src/Silverlight/Silverlight.csproj b/src/Silverlight/Silverlight.csproj index 9bce5c4e..7d901363 100644 --- a/src/Silverlight/Silverlight.csproj +++ b/src/Silverlight/Silverlight.csproj @@ -773,6 +773,9 @@ Random\WH2006.cs + + Random\Xorshift.cs + Sampling\Sample.Chebyshev.cs diff --git a/src/UnitTests/DistributionTests/CommonDistributionTests.cs b/src/UnitTests/DistributionTests/CommonDistributionTests.cs index c39799d8..0b4338d5 100644 --- a/src/UnitTests/DistributionTests/CommonDistributionTests.cs +++ b/src/UnitTests/DistributionTests/CommonDistributionTests.cs @@ -34,7 +34,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests using System.Linq; using System.Collections.Generic; using MbUnit.Framework; - using Random; + using Numerics.Random; using Statistics; using Distributions; diff --git a/src/UnitTests/DistributionTests/Multivariate/MatrixNormalTests.cs b/src/UnitTests/DistributionTests/Multivariate/MatrixNormalTests.cs index f4f43c9b..81d0058f 100644 --- a/src/UnitTests/DistributionTests/Multivariate/MatrixNormalTests.cs +++ b/src/UnitTests/DistributionTests/Multivariate/MatrixNormalTests.cs @@ -31,13 +31,9 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate { using System; - using System.Linq; - using LinearAlgebra.Generic; using MbUnit.Framework; - using Random; using Distributions; using MathNet.Numerics.LinearAlgebra.Double; - using MathNet.Numerics.LinearAlgebra.Double.Factorization; using MathNet.Numerics.UnitTests.LinearAlgebraTests.Double; [TestFixture] diff --git a/src/UnitTests/DistributionTests/Multivariate/NormalGammaTests.cs b/src/UnitTests/DistributionTests/Multivariate/NormalGammaTests.cs index 71b4587b..603d62aa 100644 --- a/src/UnitTests/DistributionTests/Multivariate/NormalGammaTests.cs +++ b/src/UnitTests/DistributionTests/Multivariate/NormalGammaTests.cs @@ -33,7 +33,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate using System; using System.Linq; using MbUnit.Framework; - using Random; + using Numerics.Random; using Distributions; [TestFixture] diff --git a/src/UnitTests/LinearAlgebraTests/Complex/MatrixLoader.cs b/src/UnitTests/LinearAlgebraTests/Complex/MatrixLoader.cs index 2433497b..5ae81cb7 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/MatrixLoader.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/MatrixLoader.cs @@ -72,7 +72,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex // Fill a matrix with standard random numbers. var normal = new Distributions.Normal { - RandomSource = new Random.MersenneTwister(1) + RandomSource = new Numerics.Random.MersenneTwister(1) }; var matrixA = new DenseMatrix(row, col); for (var i = 0; i < row; i++) @@ -92,7 +92,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex // Fill a matrix with standard random numbers. var normal = new Distributions.Normal { - RandomSource = new Random.MersenneTwister(1) + RandomSource = new Numerics.Random.MersenneTwister(1) }; var matrixA = new DenseMatrix(order); for (var i = 0; i < order; i++) @@ -112,7 +112,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex // Fill a matrix with standard random numbers. var normal = new Distributions.Normal { - RandomSource = new Random.MersenneTwister(1) + RandomSource = new Numerics.Random.MersenneTwister(1) }; var v = new DenseVector(order); for (var i = 0; i < order; i++) @@ -129,7 +129,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex // Fill a matrix with standard random numbers. var normal = new Distributions.Normal { - RandomSource = new Random.MersenneTwister(1) + RandomSource = new Numerics.Random.MersenneTwister(1) }; var matrixA = new UserDefinedMatrix(row, col); for (var i = 0; i < row; i++) @@ -149,7 +149,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex // Fill a matrix with standard random numbers. var normal = new Distributions.Normal { - RandomSource = new Random.MersenneTwister(1) + RandomSource = new Numerics.Random.MersenneTwister(1) }; var matrixA = new UserDefinedMatrix(order); for (var i = 0; i < order; i++) @@ -169,7 +169,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex // Fill a matrix with standard random numbers. var normal = new Distributions.Normal { - RandomSource = new Random.MersenneTwister(1) + RandomSource = new Numerics.Random.MersenneTwister(1) }; var v = new UserDefinedVector(order); for (var i = 0; i < order; i++) diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/MatrixLoader.cs b/src/UnitTests/LinearAlgebraTests/Complex32/MatrixLoader.cs index 98c34c6e..9514dd61 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/MatrixLoader.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/MatrixLoader.cs @@ -72,7 +72,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32 // Fill a matrix with standard random numbers. var normal = new Distributions.Normal { - RandomSource = new Random.MersenneTwister(1) + RandomSource = new Numerics.Random.MersenneTwister(1) }; var matrixA = new DenseMatrix(row, col); for (var i = 0; i < row; i++) @@ -92,7 +92,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32 // Fill a matrix with standard random numbers. var normal = new Distributions.Normal { - RandomSource = new Random.MersenneTwister(1) + RandomSource = new Numerics.Random.MersenneTwister(1) }; var matrixA = new DenseMatrix(order); for (var i = 0; i < order; i++) @@ -112,7 +112,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32 // Fill a matrix with standard random numbers. var normal = new Distributions.Normal { - RandomSource = new Random.MersenneTwister(1) + RandomSource = new Numerics.Random.MersenneTwister(1) }; var v = new DenseVector(order); for (var i = 0; i < order; i++) @@ -129,7 +129,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32 // Fill a matrix with standard random numbers. var normal = new Distributions.Normal { - RandomSource = new Random.MersenneTwister(1) + RandomSource = new Numerics.Random.MersenneTwister(1) }; var matrixA = new UserDefinedMatrix(row, col); for (var i = 0; i < row; i++) @@ -149,7 +149,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32 // Fill a matrix with standard random numbers. var normal = new Distributions.Normal { - RandomSource = new Random.MersenneTwister(1) + RandomSource = new Numerics.Random.MersenneTwister(1) }; var matrixA = new UserDefinedMatrix(order); for (var i = 0; i < order; i++) @@ -169,7 +169,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32 // Fill a matrix with standard random numbers. var normal = new Distributions.Normal { - RandomSource = new Random.MersenneTwister(1) + RandomSource = new Numerics.Random.MersenneTwister(1) }; var v = new UserDefinedVector(order); for (var i = 0; i < order; i++) diff --git a/src/UnitTests/LinearAlgebraTests/Double/MatrixLoader.cs b/src/UnitTests/LinearAlgebraTests/Double/MatrixLoader.cs index 5ad77e85..d1cac027 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/MatrixLoader.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/MatrixLoader.cs @@ -70,7 +70,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double { // Fill a matrix with standard random numbers. var normal = new Distributions.Normal(); - normal.RandomSource = new Random.MersenneTwister(1); + normal.RandomSource = new Numerics.Random.MersenneTwister(1); var matrixA = new DenseMatrix(row, col); for (int i = 0; i < row; i++) { @@ -88,7 +88,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double { // Fill a matrix with standard random numbers. var normal = new Distributions.Normal(); - normal.RandomSource = new Random.MersenneTwister(1); + normal.RandomSource = new Numerics.Random.MersenneTwister(1); var matrixA = new DenseMatrix(order); for (int i = 0; i < order; i++) { @@ -106,7 +106,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double { // Fill a matrix with standard random numbers. var normal = new Distributions.Normal(); - normal.RandomSource = new Random.MersenneTwister(1); + normal.RandomSource = new Numerics.Random.MersenneTwister(1); var v = new DenseVector(order); for (int i = 0; i < order; i++) { @@ -121,7 +121,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double { // Fill a matrix with standard random numbers. var normal = new Distributions.Normal(); - normal.RandomSource = new Random.MersenneTwister(1); + normal.RandomSource = new Numerics.Random.MersenneTwister(1); var matrixA = new UserDefinedMatrix(row, col); for (int i = 0; i < row; i++) { @@ -139,7 +139,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double { // Fill a matrix with standard random numbers. var normal = new Distributions.Normal(); - normal.RandomSource = new Random.MersenneTwister(1); + normal.RandomSource = new Numerics.Random.MersenneTwister(1); var matrixA = new UserDefinedMatrix(order); for (int i = 0; i < order; i++) { @@ -157,7 +157,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double { // Fill a matrix with standard random numbers. var normal = new Distributions.Normal(); - normal.RandomSource = new Random.MersenneTwister(1); + normal.RandomSource = new Numerics.Random.MersenneTwister(1); var v = new UserDefinedVector(order); for (int i = 0; i < order; i++) { diff --git a/src/UnitTests/LinearAlgebraTests/Single/MatrixLoader.cs b/src/UnitTests/LinearAlgebraTests/Single/MatrixLoader.cs index 682f35a0..6279150b 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/MatrixLoader.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/MatrixLoader.cs @@ -70,7 +70,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single { // Fill a matrix with standard random numbers. var normal = new Distributions.Normal(); - normal.RandomSource = new Random.MersenneTwister(1); + normal.RandomSource = new Numerics.Random.MersenneTwister(1); var matrixA = new DenseMatrix(row, col); for (int i = 0; i < row; i++) { @@ -88,7 +88,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single { // Fill a matrix with standard random numbers. var normal = new Distributions.Normal(); - normal.RandomSource = new Random.MersenneTwister(1); + normal.RandomSource = new Numerics.Random.MersenneTwister(1); var matrixA = new DenseMatrix(order); for (int i = 0; i < order; i++) { @@ -106,7 +106,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single { // Fill a matrix with standard random numbers. var normal = new Distributions.Normal(); - normal.RandomSource = new Random.MersenneTwister(1); + normal.RandomSource = new Numerics.Random.MersenneTwister(1); var v = new DenseVector(order); for (int i = 0; i < order; i++) { @@ -121,7 +121,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single { // Fill a matrix with standard random numbers. var normal = new Distributions.Normal(); - normal.RandomSource = new Random.MersenneTwister(1); + normal.RandomSource = new Numerics.Random.MersenneTwister(1); var matrixA = new UserDefinedMatrix(row, col); for (int i = 0; i < row; i++) { @@ -139,7 +139,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single { // Fill a matrix with standard random numbers. var normal = new Distributions.Normal(); - normal.RandomSource = new Random.MersenneTwister(1); + normal.RandomSource = new Numerics.Random.MersenneTwister(1); var matrixA = new UserDefinedMatrix(order); for (int i = 0; i < order; i++) { @@ -157,7 +157,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single { // Fill a matrix with standard random numbers. var normal = new Distributions.Normal(); - normal.RandomSource = new Random.MersenneTwister(1); + normal.RandomSource = new Numerics.Random.MersenneTwister(1); var v = new UserDefinedVector(order); for (int i = 0; i < order; i++) { diff --git a/src/UnitTests/Random/Mcg31m1Tests.cs b/src/UnitTests/Random/Mcg31m1Tests.cs index f297031a..5b6c9997 100644 --- a/src/UnitTests/Random/Mcg31m1Tests.cs +++ b/src/UnitTests/Random/Mcg31m1Tests.cs @@ -28,11 +28,11 @@ // OTHER DEALINGS IN THE SOFTWARE. // -namespace MathNet.Numerics.UnitTests.RandomTests +namespace MathNet.Numerics.UnitTests.Random { using MbUnit.Framework; - using Random; - + using Numerics.Random; + [TestFixture] public class Mcg31m1Tests : RandomTests { diff --git a/src/UnitTests/Random/Mcg59Tests.cs b/src/UnitTests/Random/Mcg59Tests.cs index a99f6461..a6ff2f12 100644 --- a/src/UnitTests/Random/Mcg59Tests.cs +++ b/src/UnitTests/Random/Mcg59Tests.cs @@ -28,10 +28,10 @@ // OTHER DEALINGS IN THE SOFTWARE. // -namespace MathNet.Numerics.UnitTests.RandomTests +namespace MathNet.Numerics.UnitTests.Random { using MbUnit.Framework; - using Random; + using Numerics.Random; [TestFixture] public class Mcg59Tests : RandomTests diff --git a/src/UnitTests/Random/MersenneTwisterTests.cs b/src/UnitTests/Random/MersenneTwisterTests.cs index 368eb6e4..e838f4cf 100644 --- a/src/UnitTests/Random/MersenneTwisterTests.cs +++ b/src/UnitTests/Random/MersenneTwisterTests.cs @@ -28,10 +28,10 @@ // OTHER DEALINGS IN THE SOFTWARE. // -namespace MathNet.Numerics.UnitTests.RandomTests +namespace MathNet.Numerics.UnitTests.Random { using MbUnit.Framework; - using Random; + using Numerics.Random; [TestFixture] public class MersenneTwisterTests : RandomTests diff --git a/src/UnitTests/Random/Mrg32k3aTests.cs b/src/UnitTests/Random/Mrg32k3aTests.cs index 5064e5ec..04dacb9b 100644 --- a/src/UnitTests/Random/Mrg32k3aTests.cs +++ b/src/UnitTests/Random/Mrg32k3aTests.cs @@ -28,10 +28,10 @@ // OTHER DEALINGS IN THE SOFTWARE. // -namespace MathNet.Numerics.UnitTests.RandomTests +namespace MathNet.Numerics.UnitTests.Random { using MbUnit.Framework; - using Random; + using Numerics.Random; [TestFixture] public class Mrg32k3aTests : RandomTests diff --git a/src/UnitTests/Random/RandomTests.cs b/src/UnitTests/Random/RandomTests.cs index 879f233f..537a1add 100644 --- a/src/UnitTests/Random/RandomTests.cs +++ b/src/UnitTests/Random/RandomTests.cs @@ -28,13 +28,13 @@ // OTHER DEALINGS IN THE SOFTWARE. // -namespace MathNet.Numerics.UnitTests.RandomTests +namespace MathNet.Numerics.UnitTests.Random { using System; using System.Threading; using MbUnit.Framework; - public abstract class RandomTests + public abstract class RandomTests { private const int _n = 10000; private readonly Type _randomType; diff --git a/src/UnitTests/Random/SystemCryptoTests.cs b/src/UnitTests/Random/SystemCryptoTests.cs index 72cc67bd..711c2e4f 100644 --- a/src/UnitTests/Random/SystemCryptoTests.cs +++ b/src/UnitTests/Random/SystemCryptoTests.cs @@ -28,10 +28,10 @@ // OTHER DEALINGS IN THE SOFTWARE. // -namespace MathNet.Numerics.UnitTests.RandomTests +namespace MathNet.Numerics.UnitTests.Random { using MbUnit.Framework; - using Random; + using Numerics.Random; [TestFixture] public class SystemCryptoRandomNumberGeneratorTests : RandomTests diff --git a/src/UnitTests/Random/SystemRandomExtensionTests.cs b/src/UnitTests/Random/SystemRandomExtensionTests.cs index 1ed040d1..093f5929 100644 --- a/src/UnitTests/Random/SystemRandomExtensionTests.cs +++ b/src/UnitTests/Random/SystemRandomExtensionTests.cs @@ -28,10 +28,10 @@ // OTHER DEALINGS IN THE SOFTWARE. // -namespace MathNet.Numerics.UnitTests.RandomTests +namespace MathNet.Numerics.UnitTests.Random { using MbUnit.Framework; - using Random; + using Numerics.Random; [TestFixture] public class SystemRandomExtensionTests diff --git a/src/UnitTests/Random/WH1982Tests.cs b/src/UnitTests/Random/WH1982Tests.cs index cdd492ac..27c873eb 100644 --- a/src/UnitTests/Random/WH1982Tests.cs +++ b/src/UnitTests/Random/WH1982Tests.cs @@ -28,10 +28,10 @@ // OTHER DEALINGS IN THE SOFTWARE. // -namespace MathNet.Numerics.UnitTests.RandomTests +namespace MathNet.Numerics.UnitTests.Random { using MbUnit.Framework; - using Random; + using Numerics.Random; [TestFixture] public class WH1982Tests : RandomTests diff --git a/src/UnitTests/Random/WH2006Tests.cs b/src/UnitTests/Random/WH2006Tests.cs index 0f8ff48d..572ac9e5 100644 --- a/src/UnitTests/Random/WH2006Tests.cs +++ b/src/UnitTests/Random/WH2006Tests.cs @@ -28,10 +28,10 @@ // OTHER DEALINGS IN THE SOFTWARE. // -namespace MathNet.Numerics.UnitTests.RandomTests +namespace MathNet.Numerics.UnitTests.Random { using MbUnit.Framework; - using Random; + using Numerics.Random; [TestFixture] public class WH2006Tests : RandomTests diff --git a/src/UnitTests/Random/XorshiftTests.cs b/src/UnitTests/Random/XorshiftTests.cs new file mode 100644 index 00000000..bcda3fdb --- /dev/null +++ b/src/UnitTests/Random/XorshiftTests.cs @@ -0,0 +1,44 @@ +// +// Math.NET Numerics, part of the Math.NET Project +// http://numerics.mathdotnet.com +// http://github.com/mathnet/mathnet-numerics +// http://mathnetnumerics.codeplex.com +// +// Copyright (c) 2009-2010 Math.NET +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following +// conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// + +namespace MathNet.Numerics.UnitTests.Random +{ + using MbUnit.Framework; + using Numerics.Random; + + [TestFixture] + public class XorshiftTests : RandomTests + { + public XorshiftTests() + : base(typeof(Xorshift)) + { + } + } +} \ No newline at end of file diff --git a/src/UnitTests/SortingTests.cs b/src/UnitTests/SortingTests.cs index e9945022..1d4bd7be 100644 --- a/src/UnitTests/SortingTests.cs +++ b/src/UnitTests/SortingTests.cs @@ -42,7 +42,7 @@ namespace MathNet.Numerics.UnitTests public void TestRandomTupleArraySorting() { const int Len = 0x1 << 10; - var random = new Random(); + var random = new System.Random(); int[] keys = new int[Len]; int[] items = new int[Len]; @@ -73,7 +73,7 @@ namespace MathNet.Numerics.UnitTests public void TestRandomTupleListSorting() { const int Len = 0x1 << 10; - var random = new Random(); + var random = new System.Random(); List keys = new List(Len); List items = new List(Len); @@ -105,7 +105,7 @@ namespace MathNet.Numerics.UnitTests public void TestRandomTripleArraySorting() { const int Len = 0x1 << 10; - var random = new Random(); + var random = new System.Random(); int[] keys = new int[Len]; int[] items1 = new int[Len]; @@ -139,7 +139,7 @@ namespace MathNet.Numerics.UnitTests public void TestAppliedListSorting() { const int Len = 0x1 << 10; - var random = new Random(); + var random = new System.Random(); List list = new List(); diff --git a/src/UnitTests/StatisticsTests/MCMCTests/MetropolisHastingsSamplerTests.cs b/src/UnitTests/StatisticsTests/MCMCTests/MetropolisHastingsSamplerTests.cs index b9ebb431..ab5854dd 100644 --- a/src/UnitTests/StatisticsTests/MCMCTests/MetropolisHastingsSamplerTests.cs +++ b/src/UnitTests/StatisticsTests/MCMCTests/MetropolisHastingsSamplerTests.cs @@ -31,7 +31,7 @@ namespace MathNet.Numerics.UnitTests.StatisticsTests.McmcTests { using System; - using Random; + using Numerics.Random; using Distributions; using Statistics.Mcmc; using MbUnit.Framework; diff --git a/src/UnitTests/StatisticsTests/MCMCTests/MetropolisSamplerTests.cs b/src/UnitTests/StatisticsTests/MCMCTests/MetropolisSamplerTests.cs index 9ee1453c..9a80e875 100644 --- a/src/UnitTests/StatisticsTests/MCMCTests/MetropolisSamplerTests.cs +++ b/src/UnitTests/StatisticsTests/MCMCTests/MetropolisSamplerTests.cs @@ -31,7 +31,7 @@ namespace MathNet.Numerics.UnitTests.StatisticsTests.McmcTests { using System; - using Random; + using Numerics.Random; using Distributions; using Statistics.Mcmc; using MbUnit.Framework; diff --git a/src/UnitTests/StatisticsTests/MCMCTests/RejectionSamplerTests.cs b/src/UnitTests/StatisticsTests/MCMCTests/RejectionSamplerTests.cs index b7609eb2..d8cedf01 100644 --- a/src/UnitTests/StatisticsTests/MCMCTests/RejectionSamplerTests.cs +++ b/src/UnitTests/StatisticsTests/MCMCTests/RejectionSamplerTests.cs @@ -31,7 +31,7 @@ namespace MathNet.Numerics.UnitTests.StatisticsTests.McmcTests { using System; - using Random; + using Numerics.Random; using Distributions; using Statistics.Mcmc; using MbUnit.Framework; diff --git a/src/UnitTests/UnitTests.csproj b/src/UnitTests/UnitTests.csproj index 97b072ec..ca2bb1a2 100644 --- a/src/UnitTests/UnitTests.csproj +++ b/src/UnitTests/UnitTests.csproj @@ -321,6 +321,7 @@ +