Как преобразовать случайный 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

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