Browse Source

merged andriy's XOR RNG

la-knuth
Marcus Cuda 16 years ago
parent
commit
84762f7109
  1. 1
      src/Numerics/Numerics.csproj
  2. 146
      src/Numerics/Random/Xorshift.cs
  3. 3
      src/Silverlight/Silverlight.csproj
  4. 2
      src/UnitTests/DistributionTests/CommonDistributionTests.cs
  5. 4
      src/UnitTests/DistributionTests/Multivariate/MatrixNormalTests.cs
  6. 2
      src/UnitTests/DistributionTests/Multivariate/NormalGammaTests.cs
  7. 12
      src/UnitTests/LinearAlgebraTests/Complex/MatrixLoader.cs
  8. 12
      src/UnitTests/LinearAlgebraTests/Complex32/MatrixLoader.cs
  9. 12
      src/UnitTests/LinearAlgebraTests/Double/MatrixLoader.cs
  10. 12
      src/UnitTests/LinearAlgebraTests/Single/MatrixLoader.cs
  11. 6
      src/UnitTests/Random/Mcg31m1Tests.cs
  12. 4
      src/UnitTests/Random/Mcg59Tests.cs
  13. 4
      src/UnitTests/Random/MersenneTwisterTests.cs
  14. 4
      src/UnitTests/Random/Mrg32k3aTests.cs
  15. 4
      src/UnitTests/Random/RandomTests.cs
  16. 4
      src/UnitTests/Random/SystemCryptoTests.cs
  17. 4
      src/UnitTests/Random/SystemRandomExtensionTests.cs
  18. 4
      src/UnitTests/Random/WH1982Tests.cs
  19. 4
      src/UnitTests/Random/WH2006Tests.cs
  20. 44
      src/UnitTests/Random/XorshiftTests.cs
  21. 8
      src/UnitTests/SortingTests.cs
  22. 2
      src/UnitTests/StatisticsTests/MCMCTests/MetropolisHastingsSamplerTests.cs
  23. 2
      src/UnitTests/StatisticsTests/MCMCTests/MetropolisSamplerTests.cs
  24. 2
      src/UnitTests/StatisticsTests/MCMCTests/RejectionSamplerTests.cs
  25. 1
      src/UnitTests/UnitTests.csproj

1
src/Numerics/Numerics.csproj

@ -353,6 +353,7 @@
<Compile Include="Random\SystemRandomExtensions.cs" /> <Compile Include="Random\SystemRandomExtensions.cs" />
<Compile Include="Random\WH1982.cs" /> <Compile Include="Random\WH1982.cs" />
<Compile Include="Random\WH2006.cs" /> <Compile Include="Random\WH2006.cs" />
<Compile Include="Random\Xorshift.cs" />
<Compile Include="Sampling\Sample.Random.cs" /> <Compile Include="Sampling\Sample.Random.cs" />
<Compile Include="Sampling\Sample.Chebyshev.cs" /> <Compile Include="Sampling\Sample.Chebyshev.cs" />
<Compile Include="Sampling\Sample.Equidistant.cs" /> <Compile Include="Sampling\Sample.Equidistant.cs" />

146
src/Numerics/Random/Xorshift.cs

@ -0,0 +1,146 @@
// <copyright file="Xorshift.cs" company="Math.NET">
// 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.
// </copyright>
namespace MathNet.Numerics.Random
{
using System;
/// <summary>
/// Xor-shift pseudo random number generator (RNG) specified in Marsaglia, George. (2003). Xorshift RNGs.
/// http://www.jstatsoft.org/v08/i14/xorshift.pdf
/// </summary>
public class Xorshift : AbstractRandomNumberGenerator
{
/// <summary>
/// Initializes a new instance of the <see cref="Xorshift"/> class using
/// the current time as the seed.
/// </summary>
/// <remarks>If the seed value is zero, it is set to one. Uses the
/// value of <see cref="Control.ThreadSafeRandomNumberGenerators"/> to
/// set whether the instance is thread safe.</remarks>
public Xorshift() : this((int)DateTime.Now.Ticks)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="Xorshift"/> class using
/// the current time as the seed.
/// </summary>
/// <param name="threadSafe">if set to <c>true</c> , the class is thread safe.</param>
public Xorshift(bool threadSafe) : this((int)DateTime.Now.Ticks, threadSafe)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="Xorshift"/> class.
/// </summary>
/// <param name="seed">The seed value.</param>
/// <remarks>If the seed value is zero, it is set to one. Uses the
/// value of <see cref="Control.ThreadSafeRandomNumberGenerators"/> to
/// set whether the instance is thread safe.</remarks>
public Xorshift(int seed) : this(seed, Control.ThreadSafeRandomNumberGenerators)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="Xorshift"/> class.
/// </summary>
/// <param name="seed">The seed value.</param>
/// <param name="threadSafe">if set to <c>true</c>, the class is thread safe.</param>
public Xorshift(int seed, bool threadSafe) : base(threadSafe)
{
if (seed == 0)
{
seed = 1;
}
_x = (uint)seed;
_y = YSeed;
_z = ZSeed;
_w = WSeed;
}
/// <summary>
/// Y seed is 423864282.
/// </summary>
private const uint YSeed = 423864282;
/// <summary>
/// Y seed is 643534723.
/// </summary>
private const uint ZSeed = 643534723;
/// <summary>
/// W seed is 84452734.
/// </summary>
private const uint WSeed = 84452734;
/// <summary>
/// The multiplier to compute a double-precision floating point number [0, 1)
/// </summary>
private const double IntToDoubleMultiplier = 1.0 / (int.MaxValue + 1.0);
/// <summary>
/// Seed or last but three unsigned random number.
/// </summary>
private uint _x;
/// <summary>
/// Last but two unsigned random number.
/// </summary>
private uint _y;
/// <summary>
/// Last but one unsigned random number.
/// </summary>
private uint _z;
/// <summary>
/// Last generated unsigned random number.
/// </summary>
private uint _w;
/// <summary>
/// Returns a random number between 0.0 and 1.0.
/// </summary>
/// <returns>
/// A double-precision floating point number greater than or equal to 0.0, and less than 1.0.
/// </returns>
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;
}
}
}

3
src/Silverlight/Silverlight.csproj

@ -773,6 +773,9 @@
<Compile Include="..\Numerics\Random\WH2006.cs"> <Compile Include="..\Numerics\Random\WH2006.cs">
<Link>Random\WH2006.cs</Link> <Link>Random\WH2006.cs</Link>
</Compile> </Compile>
<Compile Include="..\Numerics\Random\Xorshift.cs">
<Link>Random\Xorshift.cs</Link>
</Compile>
<Compile Include="..\Numerics\Sampling\Sample.Chebyshev.cs"> <Compile Include="..\Numerics\Sampling\Sample.Chebyshev.cs">
<Link>Sampling\Sample.Chebyshev.cs</Link> <Link>Sampling\Sample.Chebyshev.cs</Link>
</Compile> </Compile>

2
src/UnitTests/DistributionTests/CommonDistributionTests.cs

@ -34,7 +34,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests
using System.Linq; using System.Linq;
using System.Collections.Generic; using System.Collections.Generic;
using MbUnit.Framework; using MbUnit.Framework;
using Random; using Numerics.Random;
using Statistics; using Statistics;
using Distributions; using Distributions;

4
src/UnitTests/DistributionTests/Multivariate/MatrixNormalTests.cs

@ -31,13 +31,9 @@
namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
{ {
using System; using System;
using System.Linq;
using LinearAlgebra.Generic;
using MbUnit.Framework; using MbUnit.Framework;
using Random;
using Distributions; using Distributions;
using MathNet.Numerics.LinearAlgebra.Double; using MathNet.Numerics.LinearAlgebra.Double;
using MathNet.Numerics.LinearAlgebra.Double.Factorization;
using MathNet.Numerics.UnitTests.LinearAlgebraTests.Double; using MathNet.Numerics.UnitTests.LinearAlgebraTests.Double;
[TestFixture] [TestFixture]

2
src/UnitTests/DistributionTests/Multivariate/NormalGammaTests.cs

@ -33,7 +33,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
using System; using System;
using System.Linq; using System.Linq;
using MbUnit.Framework; using MbUnit.Framework;
using Random; using Numerics.Random;
using Distributions; using Distributions;
[TestFixture] [TestFixture]

12
src/UnitTests/LinearAlgebraTests/Complex/MatrixLoader.cs

@ -72,7 +72,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal var normal = new Distributions.Normal
{ {
RandomSource = new Random.MersenneTwister(1) RandomSource = new Numerics.Random.MersenneTwister(1)
}; };
var matrixA = new DenseMatrix(row, col); var matrixA = new DenseMatrix(row, col);
for (var i = 0; i < row; i++) for (var i = 0; i < row; i++)
@ -92,7 +92,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal var normal = new Distributions.Normal
{ {
RandomSource = new Random.MersenneTwister(1) RandomSource = new Numerics.Random.MersenneTwister(1)
}; };
var matrixA = new DenseMatrix(order); var matrixA = new DenseMatrix(order);
for (var i = 0; i < order; i++) for (var i = 0; i < order; i++)
@ -112,7 +112,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal var normal = new Distributions.Normal
{ {
RandomSource = new Random.MersenneTwister(1) RandomSource = new Numerics.Random.MersenneTwister(1)
}; };
var v = new DenseVector(order); var v = new DenseVector(order);
for (var i = 0; i < order; i++) for (var i = 0; i < order; i++)
@ -129,7 +129,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal var normal = new Distributions.Normal
{ {
RandomSource = new Random.MersenneTwister(1) RandomSource = new Numerics.Random.MersenneTwister(1)
}; };
var matrixA = new UserDefinedMatrix(row, col); var matrixA = new UserDefinedMatrix(row, col);
for (var i = 0; i < row; i++) for (var i = 0; i < row; i++)
@ -149,7 +149,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal var normal = new Distributions.Normal
{ {
RandomSource = new Random.MersenneTwister(1) RandomSource = new Numerics.Random.MersenneTwister(1)
}; };
var matrixA = new UserDefinedMatrix(order); var matrixA = new UserDefinedMatrix(order);
for (var i = 0; i < order; i++) for (var i = 0; i < order; i++)
@ -169,7 +169,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal var normal = new Distributions.Normal
{ {
RandomSource = new Random.MersenneTwister(1) RandomSource = new Numerics.Random.MersenneTwister(1)
}; };
var v = new UserDefinedVector(order); var v = new UserDefinedVector(order);
for (var i = 0; i < order; i++) for (var i = 0; i < order; i++)

12
src/UnitTests/LinearAlgebraTests/Complex32/MatrixLoader.cs

@ -72,7 +72,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal var normal = new Distributions.Normal
{ {
RandomSource = new Random.MersenneTwister(1) RandomSource = new Numerics.Random.MersenneTwister(1)
}; };
var matrixA = new DenseMatrix(row, col); var matrixA = new DenseMatrix(row, col);
for (var i = 0; i < row; i++) for (var i = 0; i < row; i++)
@ -92,7 +92,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal var normal = new Distributions.Normal
{ {
RandomSource = new Random.MersenneTwister(1) RandomSource = new Numerics.Random.MersenneTwister(1)
}; };
var matrixA = new DenseMatrix(order); var matrixA = new DenseMatrix(order);
for (var i = 0; i < order; i++) for (var i = 0; i < order; i++)
@ -112,7 +112,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal var normal = new Distributions.Normal
{ {
RandomSource = new Random.MersenneTwister(1) RandomSource = new Numerics.Random.MersenneTwister(1)
}; };
var v = new DenseVector(order); var v = new DenseVector(order);
for (var i = 0; i < order; i++) for (var i = 0; i < order; i++)
@ -129,7 +129,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal var normal = new Distributions.Normal
{ {
RandomSource = new Random.MersenneTwister(1) RandomSource = new Numerics.Random.MersenneTwister(1)
}; };
var matrixA = new UserDefinedMatrix(row, col); var matrixA = new UserDefinedMatrix(row, col);
for (var i = 0; i < row; i++) for (var i = 0; i < row; i++)
@ -149,7 +149,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal var normal = new Distributions.Normal
{ {
RandomSource = new Random.MersenneTwister(1) RandomSource = new Numerics.Random.MersenneTwister(1)
}; };
var matrixA = new UserDefinedMatrix(order); var matrixA = new UserDefinedMatrix(order);
for (var i = 0; i < order; i++) for (var i = 0; i < order; i++)
@ -169,7 +169,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal var normal = new Distributions.Normal
{ {
RandomSource = new Random.MersenneTwister(1) RandomSource = new Numerics.Random.MersenneTwister(1)
}; };
var v = new UserDefinedVector(order); var v = new UserDefinedVector(order);
for (var i = 0; i < order; i++) for (var i = 0; i < order; i++)

12
src/UnitTests/LinearAlgebraTests/Double/MatrixLoader.cs

@ -70,7 +70,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
{ {
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal(); var normal = new Distributions.Normal();
normal.RandomSource = new Random.MersenneTwister(1); normal.RandomSource = new Numerics.Random.MersenneTwister(1);
var matrixA = new DenseMatrix(row, col); var matrixA = new DenseMatrix(row, col);
for (int i = 0; i < row; i++) for (int i = 0; i < row; i++)
{ {
@ -88,7 +88,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
{ {
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal(); var normal = new Distributions.Normal();
normal.RandomSource = new Random.MersenneTwister(1); normal.RandomSource = new Numerics.Random.MersenneTwister(1);
var matrixA = new DenseMatrix(order); var matrixA = new DenseMatrix(order);
for (int i = 0; i < order; i++) for (int i = 0; i < order; i++)
{ {
@ -106,7 +106,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
{ {
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal(); var normal = new Distributions.Normal();
normal.RandomSource = new Random.MersenneTwister(1); normal.RandomSource = new Numerics.Random.MersenneTwister(1);
var v = new DenseVector(order); var v = new DenseVector(order);
for (int i = 0; i < order; i++) for (int i = 0; i < order; i++)
{ {
@ -121,7 +121,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
{ {
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal(); var normal = new Distributions.Normal();
normal.RandomSource = new Random.MersenneTwister(1); normal.RandomSource = new Numerics.Random.MersenneTwister(1);
var matrixA = new UserDefinedMatrix(row, col); var matrixA = new UserDefinedMatrix(row, col);
for (int i = 0; i < row; i++) for (int i = 0; i < row; i++)
{ {
@ -139,7 +139,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
{ {
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal(); var normal = new Distributions.Normal();
normal.RandomSource = new Random.MersenneTwister(1); normal.RandomSource = new Numerics.Random.MersenneTwister(1);
var matrixA = new UserDefinedMatrix(order); var matrixA = new UserDefinedMatrix(order);
for (int i = 0; i < order; i++) for (int i = 0; i < order; i++)
{ {
@ -157,7 +157,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
{ {
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal(); var normal = new Distributions.Normal();
normal.RandomSource = new Random.MersenneTwister(1); normal.RandomSource = new Numerics.Random.MersenneTwister(1);
var v = new UserDefinedVector(order); var v = new UserDefinedVector(order);
for (int i = 0; i < order; i++) for (int i = 0; i < order; i++)
{ {

12
src/UnitTests/LinearAlgebraTests/Single/MatrixLoader.cs

@ -70,7 +70,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single
{ {
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal(); var normal = new Distributions.Normal();
normal.RandomSource = new Random.MersenneTwister(1); normal.RandomSource = new Numerics.Random.MersenneTwister(1);
var matrixA = new DenseMatrix(row, col); var matrixA = new DenseMatrix(row, col);
for (int i = 0; i < row; i++) for (int i = 0; i < row; i++)
{ {
@ -88,7 +88,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single
{ {
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal(); var normal = new Distributions.Normal();
normal.RandomSource = new Random.MersenneTwister(1); normal.RandomSource = new Numerics.Random.MersenneTwister(1);
var matrixA = new DenseMatrix(order); var matrixA = new DenseMatrix(order);
for (int i = 0; i < order; i++) for (int i = 0; i < order; i++)
{ {
@ -106,7 +106,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single
{ {
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal(); var normal = new Distributions.Normal();
normal.RandomSource = new Random.MersenneTwister(1); normal.RandomSource = new Numerics.Random.MersenneTwister(1);
var v = new DenseVector(order); var v = new DenseVector(order);
for (int i = 0; i < order; i++) for (int i = 0; i < order; i++)
{ {
@ -121,7 +121,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single
{ {
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal(); var normal = new Distributions.Normal();
normal.RandomSource = new Random.MersenneTwister(1); normal.RandomSource = new Numerics.Random.MersenneTwister(1);
var matrixA = new UserDefinedMatrix(row, col); var matrixA = new UserDefinedMatrix(row, col);
for (int i = 0; i < row; i++) for (int i = 0; i < row; i++)
{ {
@ -139,7 +139,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single
{ {
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal(); var normal = new Distributions.Normal();
normal.RandomSource = new Random.MersenneTwister(1); normal.RandomSource = new Numerics.Random.MersenneTwister(1);
var matrixA = new UserDefinedMatrix(order); var matrixA = new UserDefinedMatrix(order);
for (int i = 0; i < order; i++) for (int i = 0; i < order; i++)
{ {
@ -157,7 +157,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single
{ {
// Fill a matrix with standard random numbers. // Fill a matrix with standard random numbers.
var normal = new Distributions.Normal(); var normal = new Distributions.Normal();
normal.RandomSource = new Random.MersenneTwister(1); normal.RandomSource = new Numerics.Random.MersenneTwister(1);
var v = new UserDefinedVector(order); var v = new UserDefinedVector(order);
for (int i = 0; i < order; i++) for (int i = 0; i < order; i++)
{ {

6
src/UnitTests/Random/Mcg31m1Tests.cs

@ -28,11 +28,11 @@
// OTHER DEALINGS IN THE SOFTWARE. // OTHER DEALINGS IN THE SOFTWARE.
// </copyright> // </copyright>
namespace MathNet.Numerics.UnitTests.RandomTests namespace MathNet.Numerics.UnitTests.Random
{ {
using MbUnit.Framework; using MbUnit.Framework;
using Random; using Numerics.Random;
[TestFixture] [TestFixture]
public class Mcg31m1Tests : RandomTests public class Mcg31m1Tests : RandomTests
{ {

4
src/UnitTests/Random/Mcg59Tests.cs

@ -28,10 +28,10 @@
// OTHER DEALINGS IN THE SOFTWARE. // OTHER DEALINGS IN THE SOFTWARE.
// </copyright> // </copyright>
namespace MathNet.Numerics.UnitTests.RandomTests namespace MathNet.Numerics.UnitTests.Random
{ {
using MbUnit.Framework; using MbUnit.Framework;
using Random; using Numerics.Random;
[TestFixture] [TestFixture]
public class Mcg59Tests : RandomTests public class Mcg59Tests : RandomTests

4
src/UnitTests/Random/MersenneTwisterTests.cs

@ -28,10 +28,10 @@
// OTHER DEALINGS IN THE SOFTWARE. // OTHER DEALINGS IN THE SOFTWARE.
// </copyright> // </copyright>
namespace MathNet.Numerics.UnitTests.RandomTests namespace MathNet.Numerics.UnitTests.Random
{ {
using MbUnit.Framework; using MbUnit.Framework;
using Random; using Numerics.Random;
[TestFixture] [TestFixture]
public class MersenneTwisterTests : RandomTests public class MersenneTwisterTests : RandomTests

4
src/UnitTests/Random/Mrg32k3aTests.cs

@ -28,10 +28,10 @@
// OTHER DEALINGS IN THE SOFTWARE. // OTHER DEALINGS IN THE SOFTWARE.
// </copyright> // </copyright>
namespace MathNet.Numerics.UnitTests.RandomTests namespace MathNet.Numerics.UnitTests.Random
{ {
using MbUnit.Framework; using MbUnit.Framework;
using Random; using Numerics.Random;
[TestFixture] [TestFixture]
public class Mrg32k3aTests : RandomTests public class Mrg32k3aTests : RandomTests

4
src/UnitTests/Random/RandomTests.cs

@ -28,13 +28,13 @@
// OTHER DEALINGS IN THE SOFTWARE. // OTHER DEALINGS IN THE SOFTWARE.
// </copyright> // </copyright>
namespace MathNet.Numerics.UnitTests.RandomTests namespace MathNet.Numerics.UnitTests.Random
{ {
using System; using System;
using System.Threading; using System.Threading;
using MbUnit.Framework; using MbUnit.Framework;
public abstract class RandomTests public abstract class RandomTests
{ {
private const int _n = 10000; private const int _n = 10000;
private readonly Type _randomType; private readonly Type _randomType;

4
src/UnitTests/Random/SystemCryptoTests.cs

@ -28,10 +28,10 @@
// OTHER DEALINGS IN THE SOFTWARE. // OTHER DEALINGS IN THE SOFTWARE.
// </copyright> // </copyright>
namespace MathNet.Numerics.UnitTests.RandomTests namespace MathNet.Numerics.UnitTests.Random
{ {
using MbUnit.Framework; using MbUnit.Framework;
using Random; using Numerics.Random;
[TestFixture] [TestFixture]
public class SystemCryptoRandomNumberGeneratorTests : RandomTests public class SystemCryptoRandomNumberGeneratorTests : RandomTests

4
src/UnitTests/Random/SystemRandomExtensionTests.cs

@ -28,10 +28,10 @@
// OTHER DEALINGS IN THE SOFTWARE. // OTHER DEALINGS IN THE SOFTWARE.
// </copyright> // </copyright>
namespace MathNet.Numerics.UnitTests.RandomTests namespace MathNet.Numerics.UnitTests.Random
{ {
using MbUnit.Framework; using MbUnit.Framework;
using Random; using Numerics.Random;
[TestFixture] [TestFixture]
public class SystemRandomExtensionTests public class SystemRandomExtensionTests

4
src/UnitTests/Random/WH1982Tests.cs

@ -28,10 +28,10 @@
// OTHER DEALINGS IN THE SOFTWARE. // OTHER DEALINGS IN THE SOFTWARE.
// </copyright> // </copyright>
namespace MathNet.Numerics.UnitTests.RandomTests namespace MathNet.Numerics.UnitTests.Random
{ {
using MbUnit.Framework; using MbUnit.Framework;
using Random; using Numerics.Random;
[TestFixture] [TestFixture]
public class WH1982Tests : RandomTests public class WH1982Tests : RandomTests

4
src/UnitTests/Random/WH2006Tests.cs

@ -28,10 +28,10 @@
// OTHER DEALINGS IN THE SOFTWARE. // OTHER DEALINGS IN THE SOFTWARE.
// </copyright> // </copyright>
namespace MathNet.Numerics.UnitTests.RandomTests namespace MathNet.Numerics.UnitTests.Random
{ {
using MbUnit.Framework; using MbUnit.Framework;
using Random; using Numerics.Random;
[TestFixture] [TestFixture]
public class WH2006Tests : RandomTests public class WH2006Tests : RandomTests

44
src/UnitTests/Random/XorshiftTests.cs

@ -0,0 +1,44 @@
// <copyright file="XorshiftTests.cs" company="Math.NET">
// 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.
// </copyright>
namespace MathNet.Numerics.UnitTests.Random
{
using MbUnit.Framework;
using Numerics.Random;
[TestFixture]
public class XorshiftTests : RandomTests
{
public XorshiftTests()
: base(typeof(Xorshift))
{
}
}
}

8
src/UnitTests/SortingTests.cs

@ -42,7 +42,7 @@ namespace MathNet.Numerics.UnitTests
public void TestRandomTupleArraySorting() public void TestRandomTupleArraySorting()
{ {
const int Len = 0x1 << 10; const int Len = 0x1 << 10;
var random = new Random(); var random = new System.Random();
int[] keys = new int[Len]; int[] keys = new int[Len];
int[] items = new int[Len]; int[] items = new int[Len];
@ -73,7 +73,7 @@ namespace MathNet.Numerics.UnitTests
public void TestRandomTupleListSorting() public void TestRandomTupleListSorting()
{ {
const int Len = 0x1 << 10; const int Len = 0x1 << 10;
var random = new Random(); var random = new System.Random();
List<int> keys = new List<int>(Len); List<int> keys = new List<int>(Len);
List<int> items = new List<int>(Len); List<int> items = new List<int>(Len);
@ -105,7 +105,7 @@ namespace MathNet.Numerics.UnitTests
public void TestRandomTripleArraySorting() public void TestRandomTripleArraySorting()
{ {
const int Len = 0x1 << 10; const int Len = 0x1 << 10;
var random = new Random(); var random = new System.Random();
int[] keys = new int[Len]; int[] keys = new int[Len];
int[] items1 = new int[Len]; int[] items1 = new int[Len];
@ -139,7 +139,7 @@ namespace MathNet.Numerics.UnitTests
public void TestAppliedListSorting() public void TestAppliedListSorting()
{ {
const int Len = 0x1 << 10; const int Len = 0x1 << 10;
var random = new Random(); var random = new System.Random();
List<int> list = new List<int>(); List<int> list = new List<int>();

2
src/UnitTests/StatisticsTests/MCMCTests/MetropolisHastingsSamplerTests.cs

@ -31,7 +31,7 @@
namespace MathNet.Numerics.UnitTests.StatisticsTests.McmcTests namespace MathNet.Numerics.UnitTests.StatisticsTests.McmcTests
{ {
using System; using System;
using Random; using Numerics.Random;
using Distributions; using Distributions;
using Statistics.Mcmc; using Statistics.Mcmc;
using MbUnit.Framework; using MbUnit.Framework;

2
src/UnitTests/StatisticsTests/MCMCTests/MetropolisSamplerTests.cs

@ -31,7 +31,7 @@
namespace MathNet.Numerics.UnitTests.StatisticsTests.McmcTests namespace MathNet.Numerics.UnitTests.StatisticsTests.McmcTests
{ {
using System; using System;
using Random; using Numerics.Random;
using Distributions; using Distributions;
using Statistics.Mcmc; using Statistics.Mcmc;
using MbUnit.Framework; using MbUnit.Framework;

2
src/UnitTests/StatisticsTests/MCMCTests/RejectionSamplerTests.cs

@ -31,7 +31,7 @@
namespace MathNet.Numerics.UnitTests.StatisticsTests.McmcTests namespace MathNet.Numerics.UnitTests.StatisticsTests.McmcTests
{ {
using System; using System;
using Random; using Numerics.Random;
using Distributions; using Distributions;
using Statistics.Mcmc; using Statistics.Mcmc;
using MbUnit.Framework; using MbUnit.Framework;

1
src/UnitTests/UnitTests.csproj

@ -321,6 +321,7 @@
<Compile Include="NumberTheoryTests\IntegerTheoryTest.cs" /> <Compile Include="NumberTheoryTests\IntegerTheoryTest.cs" />
<Compile Include="PrecisionTest.cs" /> <Compile Include="PrecisionTest.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Random\XorshiftTests.cs" />
<Compile Include="Random\Mcg31m1Tests.cs" /> <Compile Include="Random\Mcg31m1Tests.cs" />
<Compile Include="Random\Mcg59Tests.cs" /> <Compile Include="Random\Mcg59Tests.cs" />
<Compile Include="Random\MersenneTwisterTests.cs" /> <Compile Include="Random\MersenneTwisterTests.cs" />

Loading…
Cancel
Save