update forge
This commit is contained in:
@@ -18,7 +18,7 @@ public class ForgeRandom : IRandom, IDisposable
|
||||
|
||||
public void NextBytes(byte[] buffer)
|
||||
{
|
||||
for (var i = 0; i < buffer.Length; i++)
|
||||
for (int i = 0; i < buffer.Length; i++)
|
||||
{
|
||||
buffer[i] = (byte)_randomNumberGenerator.RandiRange(0, 255);
|
||||
}
|
||||
@@ -26,13 +26,25 @@ public class ForgeRandom : IRandom, IDisposable
|
||||
|
||||
public void NextBytes(Span<byte> buffer)
|
||||
{
|
||||
for (var i = 0; i < buffer.Length; i++)
|
||||
for (int i = 0; i < buffer.Length; i++)
|
||||
{
|
||||
buffer[i] = (byte)_randomNumberGenerator.RandiRange(0, 255);
|
||||
}
|
||||
}
|
||||
|
||||
public double NextDouble()
|
||||
{
|
||||
double value;
|
||||
do
|
||||
{
|
||||
value = _randomNumberGenerator.Randf();
|
||||
}
|
||||
while (value >= 1.0d);
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
public double NextDoubleInclusive()
|
||||
{
|
||||
return _randomNumberGenerator.Randf();
|
||||
}
|
||||
@@ -52,12 +64,17 @@ public class ForgeRandom : IRandom, IDisposable
|
||||
return _randomNumberGenerator.RandiRange(minValue, maxValue - 1);
|
||||
}
|
||||
|
||||
public int NextIntInclusive(int minValue, int maxValue)
|
||||
{
|
||||
return _randomNumberGenerator.RandiRange(minValue, maxValue);
|
||||
}
|
||||
|
||||
public long NextInt64()
|
||||
{
|
||||
unchecked
|
||||
{
|
||||
var high = _randomNumberGenerator.Randi();
|
||||
var low = _randomNumberGenerator.Randi();
|
||||
uint high = _randomNumberGenerator.Randi();
|
||||
uint low = _randomNumberGenerator.Randi();
|
||||
return ((long)high << 32) | low;
|
||||
}
|
||||
}
|
||||
@@ -74,13 +91,47 @@ public class ForgeRandom : IRandom, IDisposable
|
||||
throw new ArgumentOutOfRangeException(nameof(minValue), "minValue must be less than maxValue.");
|
||||
}
|
||||
|
||||
var range = (ulong)(maxValue - minValue);
|
||||
var rand = (ulong)NextInt64();
|
||||
ulong range = (ulong)(maxValue - minValue);
|
||||
ulong rand = (ulong)NextInt64();
|
||||
|
||||
return (long)(rand % range) + minValue;
|
||||
}
|
||||
|
||||
public long NextInt64Inclusive(long minValue, long maxValue)
|
||||
{
|
||||
if (minValue > maxValue)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException(nameof(minValue), "minValue must be less than or equal to maxValue.");
|
||||
}
|
||||
|
||||
if (minValue == maxValue)
|
||||
{
|
||||
return minValue;
|
||||
}
|
||||
|
||||
if (maxValue == long.MaxValue)
|
||||
{
|
||||
ulong inclusiveRange = (ulong)(maxValue - minValue) + 1UL;
|
||||
ulong rand = (ulong)NextInt64();
|
||||
return (long)(rand % inclusiveRange) + minValue;
|
||||
}
|
||||
|
||||
return NextInt64(minValue, maxValue + 1);
|
||||
}
|
||||
|
||||
public float NextSingle()
|
||||
{
|
||||
float value;
|
||||
do
|
||||
{
|
||||
value = _randomNumberGenerator.Randf();
|
||||
}
|
||||
while (value >= 1.0f);
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
public float NextSingleInclusive()
|
||||
{
|
||||
return _randomNumberGenerator.Randf();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user