Julia中随机浮点数的生成

Julia中随机浮点数的生成,julia,Julia,我试图解决“当x是介于[1,2]之间的随机浮点数时,x*(1/x)能不能不为1”的问题,并且我试图在Julia中生成随机浮点数来检验假设。我试过了 BigFloat(rand(1,2)), as well as Float64(1,2) 无济于事。感谢您的帮助答案是肯定的 for i=1:100 x = rand() + 1.0; xi = 1.0/x y = x * xi if y != 1.0 println("case ", i, " x*

我试图解决“当x是介于[1,2]之间的随机浮点数时,x*(1/x)能不能不为1”的问题,并且我试图在Julia中生成随机浮点数来检验假设。我试过了

BigFloat(rand(1,2)), as well as Float64(1,2)
无济于事。感谢您的帮助

答案是肯定的

for i=1:100
    x = rand() + 1.0;
    xi = 1.0/x
    y = x * xi
    if y != 1.0
        println("case ", i, " x*(1/x) != 1 for x=", x, " diff= ", y - 1.0)
    end
end


case 18 x*(1/x) != 1 for x=1.3193289816663771 diff= -1.1102230246251565e-16
case 26 x*(1/x) != 1 for x=1.9692333690500858 diff= -1.1102230246251565e-16
case 42 x*(1/x) != 1 for x=1.8927527081187694 diff= -1.1102230246251565e-16    
...
请注意,这是由于浮动(双精度)的精度有限。
这在数学意义上是不正确的。

第一个帮助是花一个晚上阅读:。另外,尝试一下
rand(Float64)+1.0
在1.0和2.0之间应该是相当一致的(有一个微妙的问题,关于你想要哪种一致:在浮点数上,还是在实数上)。这是家庭作业吗?@DanGetz dat微妙的问题tho+1@TasosPapastylianou仔细想想,浮点是均匀分布在[1.0,2.0]上的(因为它们都有相同的指数)。因此生成一个均匀的[1.0,2.0]数可能比[0.0,1.0]更直接。在实现
rand(Interval)
type函数时,这可能是一个有趣的问题。
rand()+1
。但这绝对是一个家庭作业问题,涉及浮点数的密度。