Я хочу взять случайную строку из 32 бит и объявить эту битовую строку как float в C++
.Сделать число с плавающей точкой из двоичной строки в C++
Например, строка 0.0111 1111.1000 0000 0000 0000 0000 000
должна дать мне поплавок, соответствующий 1.5
, поскольку это определение F32 в соответствии с IEEE 754-2008. Первый 0 означает + ve, следующий 8 дает вам показатель 127-127 = 0, а 23-битная мантисса дает вам .5
.
Если строка не является хорошим форматом данных для этого, я был бы рад услышать предложения.
На самом деле я хочу создать случайное число с плавающей запятой в C++, но я не знаю, как это сделать. Где случайным я имею в виду, что каждый бит равен 0 или 1. Решения (например, здесь: C++ random float number generation). Я нашел предложение с использованием генератора случайных чисел, затем деления на RAND_MAX
, а затем умножения на FLOAT_MAX
или каким-то другим способом создания поплавка согласно некоторому равномерному распределению. Это мне нехорошо, так как значения будут равномерно распределены, это будет генерировать больше поплавков с большими показателями.
В основном этот вопрос, но для C++: Convert Double to Binary representation?
Если все, что вы хотите, это случайное число с плавающей точкой см: HTTP://stackoverflow.com/questions/686353/c-random-float-number-generation – NathanOliver
'int32_t x =/* случайное значение * /; float f = * (float *) & x; '. Не сказать, что это хорошая идея или не нарушит никаких правил. Но это может быть сделано. –
std :: bitet, может быть? Кроме того, похоже, вы задаете два совершенно разных вопроса. Не могли бы вы уточнить? – JETM