one
與rand
不同。 使用one(AbstractFloat)
時,所有的輸出是「相同」:
julia> one(Float64)
1.0
julia> one(Float32)
1.0f0
julia> 1.0 == 1.0f0
true
這是不正確的使用rand
時:
julia> rand(srand(1), Float64)
0.23603334566204692
julia> rand(srand(1), Float32)
0.5479944f0
julia> rand(srand(1), Float32) == rand(srand(1), Float64)
false
這意味着如果rand
會表現得像one
,人們可能會得到兩個不同的結果在兩臺不同的機器上具有相同的種子(例如一個是x86,另一個是x64)。看看代碼中random.jl:
@inline蘭特【T <:聯盟{BOOL,INT8,UINT8,Int16的,UINT16,的Int32,UInt32的}}(R ::梅森旋轉算法,::類型【T })= rand_ui52_raw(r)的%T
既rand(Signed)
& rand(Unsigned)
是非法的太。
朱莉婭不知道你在'BigFloat','Float16','Float32'和'Float64'中喜歡哪種類型。 – Gnimuc
但是,例如'one(AbstractFloat)'根據系統給出「Float32」或「Float64」對象。不應該'蘭特'有相同的行爲? – Taiki
好的情況下,在我看來,對於朱莉婭來說,在類似的情況下表現得更好,就像上面那樣。 –