Skip to content

Commit

Permalink
add array versions of randexp and export these functions
Browse files Browse the repository at this point in the history
  • Loading branch information
rfourquet committed Nov 26, 2014
1 parent 401eb4a commit ea612ee
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 2 deletions.
2 changes: 2 additions & 0 deletions base/exports.jl
Original file line number Diff line number Diff line change
Expand Up @@ -909,6 +909,8 @@ export
randbool,
randn!,
randn,
randexp!,
randexp,
srand,

# bigfloat & precision
Expand Down
19 changes: 17 additions & 2 deletions base/random.jl
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@ using Base.dSFMT
export srand,
rand, rand!,
randn, randn!,
randexp, randexp!,
randbool,
AbstractRNG, RNG, MersenneTwister,
randexp
AbstractRNG, RNG, MersenneTwister


abstract AbstractRNG

Expand Down Expand Up @@ -1004,6 +1005,20 @@ function randexp_unlikely(rng, idx, x)
end
end

function randexp!(rng::MersenneTwister, A::Array{Float64})
for i = 1:length(A)
@inbounds A[i] = randexp(rng)
end
A
end

randexp!(A::Array{Float64}) = randexp!(GLOBAL_RNG, A)
randexp(dims::Dims) = randexp!(Array(Float64, dims))
randexp(dims::Int...) = randexp!(Array(Float64, dims))
randexp(rng::MersenneTwister, dims::Dims) = randexp!(rng, Array(Float64, dims))
randexp(rng::MersenneTwister, dims::Int...) = randexp!(rng, Array(Float64, dims))


## random UUID generation

immutable UUID
Expand Down
9 changes: 9 additions & 0 deletions test/random.jl
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,20 @@ if sizeof(Int32) < sizeof(Int)

end

randn()
randn(100000)
randn!(Array(Float64, 100000))
randn(MersenneTwister(10))
randn(MersenneTwister(10), 100000)
randn!(MersenneTwister(10), Array(Float64, 100000))

randexp()
randexp(100000)
randexp!(Array(Float64, 100000))
randexp(MersenneTwister(10))
randexp(MersenneTwister(10), 100000)
randexp!(MersenneTwister(10), Array(Float64, 100000))

# Test ziggurat tables
ziggurat_table_size = 256
nmantissa = int64(2)^51 # one bit for the sign
Expand Down

0 comments on commit ea612ee

Please sign in to comment.