2017-09-19 58 views
0

私は「xが(1,2)の間のランダムな浮動小数点数であるときにx *(1/x)を1にすることはできません」という質問を解決しようとしています。仮説を検証するためにJuliaで乱数を生成する。私はやってみましたJuliaでランダムな浮動小数点数を生成する

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

いいえ、利用できません。すべてのヘルプは

+3

まず、夜間にお手伝いし、https://docs.julialang.org/en/stable/を読んでください。また、 'rand(Float64)+ 1.0'は1.0と2.0の間でかなり統一されていなければなりません。浮動小数点数や実数のどのユニフォーミティに微妙な質問があります。 –

+0

この宿題はありますか? –

+1

@DanGetz dat delicate question tho。 +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  
... 

認識しています。 これは数学的な意味では当てはまりません。

関連する問題