Примечание.. Для краткости не следует различать случайность и псевдослучайность. Кроме того, в этом контексте ограниченные средства между заданными значениями min и max)
Класс System.Random
обеспечивает случайную генерацию целых чисел, парных и байтовых массивов.
Используя Random.Next, можно легко генерировать случайные ограниченные значения типа Boolean, Char, (S) Byte, (U) Int16, (U) Int32. Используя Random.NextDouble()
, можно аналогичным образом генерировать ограниченные значения типов Double и Single (насколько я понимаю этот тип). Генерация случайной строки (заданной длины и алфавита) имеет также .
Рассмотрим оставшиеся примитивные типы данных (исключая Object): Decimal и (U) Int64. Их случайное поколение также было решено (Decimal, (U) Int64 с помощью Random.NextBytes()
)., но не при ограничении. Теоретически можно использовать выборку отклонений (т.е. Цикл до тех пор, пока генерируемое значение не станет желательным диапазоном), но это, очевидно, не является практическим решением. Нормализация NextDouble()
не будет работать, поскольку она не имеет достаточных значащих цифр.
Короче говоря, я прошу о правильной реализации следующих функций:
long NextLong(long min, long max)
long NextDecimal(decimal min, decimal max)
Обратите внимание, что поскольку System.DateTime
основано на ulong, первая функция также допускает случайную ограниченную генерацию таких структур (аналогично здесь, только в тиках вместо минут).