Я хотел бы знать, как наилучшим образом получить псевдослучайное число с плавающей точкой в закрытом интервале, используя функцию ядра Ruby rand (пожалуйста, не случайный модуль).
В качестве примера я буду использовать закрытый интервал [0,0, 7,7] (оба 0,0 и 7,7 включены в интервал), но любой другой интервал с плавающей запятой также должен быть действительным.
Для интервала [0.0, 7.7] следующее решение недопустимо :
rand * 7.7
Почему?
Если вы позвоните rand без аргументов, вы получите псевдослучайное число с плавающей запятой, большее или равное 0,0 и меньшее 1,0. Так каков диапазон чисел с плавающей запятой, которые могут дать нам предыдущие решения?
rand вернет псевдослучайное число с плавающей точкой в диапазоне [0.0, 0.9999999 ...]
0.0 * 7.7
=> 0.0 # Correct!
0.9999999 * 7.7
=> 7.69999923 # Incorrect!
Интервал не совпадает с [0.0, 7.7].
Кто-нибудь знает элегантное решение этой проблемы?
Спасибо!