Генерирование случайного числа для типа ulong - C#
Формулировка задачи:
Мне необходимо сгенерировать случайное число для типа ulong.
Для решения этой задачи напрашивается самый простой вариант.
Необходимо использовать генератор случайный чисел для 2-х переменных int32 (int), чтобы получить int64 (long).
А затем совершить соответствующее преобразование в uint и ulong соответственно на определённом этапе работы алгоритма.
Для решения этой задачи я использую следующую программную реализацию:
При вызове этого метода с приведенными ниже параметрами у меня при выполнении возникает исключение ArgumentOutOfRangeException.
Скажите, как должен выглядеть код этого метода, чтобы не возникало ошибки при его вызове?
Не происходит ли в этом коде "усечение" области допустимых значений для uint в 2-раза, т.к. мы используем генератор для метода (new Random()).Next(), который генерирует числа для диапазона [int.MinValue, int.MaxValue]?
Как можно учесть этот момент в алгоритме?
public static ulong RandomULong(ulong min, ulong max) { var hight = (new Random()).Next((int)(min >> 32), (int)(max >> 32)); var minLow = Math.Min((int)min, (int)max); var maxLow = Math.Max((int)min, (int)max); var low = (uint)(new Random().Next(minLow, maxLow)); ulong result = (ulong)hight; result <<= 32; result |= (ulong)low; return result; }
RandomULong(ulong.MinValue, ulong.MaxValue)
Решение задачи: «Генерирование случайного числа для типа ulong»
textual
Листинг программы
var r = new Random(); var b = new byte[sizeof (ulong)]; r.NextBytes(b); var res = BitConverter.ToUInt64(b, 0);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д