Как преобразовать случайный uint32_t в случайный поплавок в интервале [0, 1) с использованием метода из документации XosC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как преобразовать случайный uint32_t в случайный поплавок в интервале [0, 1) с использованием метода из документации Xos

Сообщение Anonymous »

На веб-странице Xoshiro они имеют следующее утверждение под заголовком «генерирующие однородные дублы в интервале устройства»: < /p>

Стандартный двойной (64-разрядный) чисел с плавающей точкой в ​​формате IEEE имеет 52 бита значимых, плюс биту невиновного в левом значении. Таким образом, представление может фактически хранить числа с 53 значимыми бинарными цифрами. < /P>
Из-за этого факта в C99 64-разрядное insigned integer x следует преобразовать в 64-разрядное двойное, используя выражение < /p>

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

#include 

(x >> 11) * 0x1.0p-53
Какой правильный аналог этого выражения для преобразования uint32_t в обычный поплавок?>

Подробнее здесь: https://stackoverflow.com/questions/795 ... val-0-1-us
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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