Получить случайное двойное значение (с плавающей запятой) из случайного массива байтов от 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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