in Microsoft.Shared.Dna.Hash/AffineHash.cs [450:466]
private static long NextFactor(Random random, long minValue)
{
ulong result = 0UL;
byte[] buffer = new byte[sizeof(ulong)];
random.NextBytes(buffer);
result = BitConverter.ToUInt64(buffer, 0);
ulong m = (ulong)minValue;
if (m > result)
{
result += m;
}
result &= AffineHash.BlockMask & ~1UL;
result++;
return (long)result;
}