2017-09-19 193 views
0
隨機浮點點

我試圖解決的問題「能否X *(1/X)永遠不會是1的時候,x是之間的隨機浮點數[1,2]」,我想在Julia生成隨機浮動數字來測試假設。我試過生成朱莉婭

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

無濟於事。任何幫助表示讚賞

+3

首先幫助是採取一個晚上閱讀:https://docs.julialang.org/en/stable/。也可以試試在1.0到2.0之間rand(Float64)+ 1.0應該是相當一致的(關於你想要的均勻性:在浮點數還是在實數上有一個微妙的問題)。 –

+0

這是功課嗎? –

+1

@DanGetz DAT微妙的問題壽。 +1 –

回答

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

意識到這是由於浮點數(雙打)的精度限制。 在數學意義上這不是真的。