在Julia中生成随机浮点数

时间:2017-09-19 16:10:31

标签: julia

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

BigFloat(rand(1,2)), as well as Float64(1,2)

无济于事。任何帮助表示赞赏

1 个答案:

答案 0 :(得分:1)

答案是肯定的

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    
...

意识到这是由于浮子(双打)的精度有限。 从数学意义上讲,这不是真的。