Вопрос некорректен.Что же означает равномерное распределение по числам с плавающей запятой?
Если взять реплику из несоответствие , то одним из способов реализовать ваш вопрос является определение того, что вы хотите распределение, которое минимизирует следующее значение:
Где x
- это случайная величина , в которой вы производите выборку с помощью функции GetRandomVal(double fMin, double fMax)
, а означает вероятность того, что случайное значение x
меньше или равно t
.
И теперь вы можете продолжить и попытаться оценить, например, ответ любителя .(Подсказка на все ответы, которые не используют всю точность и придерживаются, например, 52 битов, не выполнит этот критерий минимизации.)
Однако, если вы просто хотите иметь возможность генерировать все шаблоны битов с плавающей запятой, которые попадают в вашуказанный диапазон с равной вероятностью, даже если это означает, что, например, запрос GetRandomVal(0,1000)
создаст больше значений от 0 до 1,5, чем от 1,5 до 1000, это легко: любой интервал чисел с плавающей запятой IEEE, если интерпретировать его как битовые комбинации, легко отображается наочень небольшое количество интервалов unsigned int64
.Смотрите, например, этот вопрос .Генерация равномерно распределенных случайных значений unsigned int64
в любом заданном интервале очень проста.