Получить случайное двойное значение (с плавающей запятой) из случайного массива байтов от 0 до 1 в С#?C#

Место общения программистов C#
Anonymous
Получить случайное двойное значение (с плавающей запятой) из случайного массива байтов от 0 до 1 в С#?

Сообщение Anonymous »

Предположим, у меня есть действительно случайный массив байтов (например, полученный из источника энтропии).

Код: Выделить всё

byte[] myTrulyRandomBytes = MyEntropyHardwareEngine.GetBytes(8);
Теперь я хочу получить случайное значение с плавающей запятой двойной точности, но между значениями 0 и положительным 1 (например, Random. NextDouble()).

Простая передача массива из 8 случайных байтов в BitConverter.ToDouble() может привести к странным результатам, но самое главное, результат почти никогда не будет меньше 1.

Я хорошо разбираюсь в битовых манипуляциях, но форматирование чисел с плавающей запятой всегда было для меня загадкой. Я пробовал много комбинаций битов, чтобы применить случайность, и всегда в конечном итоге обнаруживал, что числа либо чуть больше 1, всегда ОЧЕНЬ близки к 0, либо очень большие.

Может кто-нибудь объясните, какие биты следует сделать случайными в двойном числе, чтобы сделать его случайным в диапазоне 0 и 1?

Подробнее здесь: https://stackoverflow.com/questions/435 ... en-0-and-1

Вернуться в «C#»