public static long random(Range r)
{
rand.GetBytes(randBytes);
long v = BitConverter.ToInt64(randBytes, 0);
if (r == null)
{
return(v);
}
if (v < 0)
{
v = -v;
}
long start = r.start();
long end = r.end();
if (r.inclusive())
{
++end;
}
if (end <= start)
{
throw ArgErr.make("Range end < start: " + r).val;
}
return(start + (v % (end - start)));
}