39 lines
670 B
C#
39 lines
670 B
C#
namespace ErsatzTV.Core.Scheduling;
|
|
|
|
public class CloneableRandom
|
|
{
|
|
private readonly Random _random;
|
|
private readonly int _seed;
|
|
private int _count;
|
|
|
|
public CloneableRandom(int seed)
|
|
{
|
|
_seed = seed;
|
|
_random = new Random(_seed);
|
|
}
|
|
|
|
public CloneableRandom Clone()
|
|
{
|
|
var clone = new CloneableRandom(_seed);
|
|
|
|
for (var i = 0; i < _count; i++)
|
|
{
|
|
clone.Next();
|
|
}
|
|
|
|
return clone;
|
|
}
|
|
|
|
public int Next()
|
|
{
|
|
_count++;
|
|
return _random.Next();
|
|
}
|
|
|
|
public int Next(int maxValue)
|
|
{
|
|
_count++;
|
|
return _random.Next(maxValue);
|
|
}
|
|
}
|