Browse Source

Random: MersenneTwister.Default (thread-safe)

pull/184/head
Christoph Ruegg 13 years ago
parent
commit
d130a2ba8f
  1. 31
      src/Numerics/Random/MersenneTwister.cs

31
src/Numerics/Random/MersenneTwister.cs

@ -67,6 +67,7 @@
*/
using System;
using System.Threading;
namespace MathNet.Numerics.Random
{
@ -159,6 +160,36 @@ namespace MathNet.Numerics.Random
{
init_genrand((uint)seed);
}
#if PORTABLE
[ThreadStatic]
static MersenneTwister DefaultInstance;
/// <summary>
/// Default instance, thread-safe.
/// </summary>
public static MersenneTwister Default
{
get
{
if (DefaultInstance == null)
{
DefaultInstance = new MersenneTwister(RandomSeed.Guid(), true);
}
return DefaultInstance;
}
}
#else
static readonly ThreadLocal<MersenneTwister> DefaultInstance = new ThreadLocal<MersenneTwister>(() => new MersenneTwister(RandomSeed.Guid(), true));
/// <summary>
/// Default instance, thread-safe.
/// </summary>
public static MersenneTwister Default
{
get { return DefaultInstance.Value; }
}
#endif
/*/// <summary>
/// Initializes a new instance of the <see cref="MersenneTwister"/> class.

Loading…
Cancel
Save