Как сгенерировать случайное 64-разрядное число (типа long, он же Int64) на C#?
Ответ
из social.msdn.microsoft.com
Можно так:
private readonly Random rnd = new Random(); // create it just once and reuse
private ulong Get64BitRandom(ulong minValue, ulong maxValue)
{
// Get a random array of 8 bytes.
// As an option, you could also use the cryptography namespace stuff to generate a random byte[8]
byte[] buffer = new byte[sizeof(ulong)];
rnd.NextBytes(buffer);
return BitConverter.ToUInt64(buffer, 0) % (maxValue - minValue + 1) + minValue;
}
или так:
public static ulong Get64BitRandom(ulong minValue, ulong maxValue)
{
// Get a random array of 8 bytes
byte[] buffer = new byte[sizeof(ulong)];
rnd.NextBytes(buffer);
if (minValue == ulong.MinValue && maxValue == ulong.MaxValue)
return BitConverter.ToUInt64(buffer, 0);
ulong modValue = maxValue - minValue + 1;
return (BitConverter.ToUInt64(buffer, 0) % modValue) + minValue;
}
Комментариев нет:
Отправить комментарий