Skip to content

Commit fb60449

Browse files
committed
deprecate srand(rng, filename::AbstractString)
`srand` should accept a seed as second argument; here `filename` is only an indirect seed, preventing the use a string object as a direct seed.
1 parent 970a742 commit fb60449

File tree

4 files changed

+40
-18
lines changed

4 files changed

+40
-18
lines changed

NEWS.md

+31
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,34 @@
1+
Julia v0.7.0 Release Notes
2+
==========================
3+
4+
New language features
5+
---------------------
6+
7+
8+
Language changes
9+
----------------
10+
11+
12+
Breaking changes
13+
----------------
14+
15+
This section lists changes that do not have deprecation warnings.
16+
17+
18+
Library improvements
19+
--------------------
20+
21+
22+
Compiler/Runtime improvements
23+
-----------------------------
24+
25+
26+
Deprecated or removed
27+
---------------------
28+
29+
* The method `srand(rng, filename, n=4)` has been deprecated ([#21359]).
30+
31+
132
Julia v0.6.0 Release Notes
233
==========================
334

base/deprecated.jl

+5
Original file line numberDiff line numberDiff line change
@@ -1310,6 +1310,11 @@ end
13101310
# PR #16984
13111311
@deprecate MersenneTwister() MersenneTwister(0)
13121312

1313+
# PR #21359
1314+
@deprecate srand(r::MersenneTwister, filename::AbstractString, n::Integer=4) srand(r, read!(filename, Array{UInt32}(Int(n))))
1315+
@deprecate srand(filename::AbstractString, n::Integer=4) srand(read!(filename, Array{UInt32}(Int(n))))
1316+
@deprecate MersenneTwister(filename::AbstractString) srand(MersenneTwister(0), read!(filename, Array{UInt32}(Int(4))))
1317+
13131318
# #19635
13141319
for fname in (:ones, :zeros)
13151320
@eval @deprecate ($fname)(T::Type, arr) ($fname)(T, size(arr))

base/random.jl

+4-15
Original file line numberDiff line numberDiff line change
@@ -213,25 +213,19 @@ function make_seed(n::Integer)
213213
end
214214
end
215215

216-
function make_seed(filename::AbstractString, n::Integer)
217-
read!(filename, Vector{UInt32}(Int(n)))
218-
end
219-
220216
## srand()
221217

222218
"""
223-
srand([rng=GLOBAL_RNG], [seed]) -> rng
224-
srand([rng=GLOBAL_RNG], filename, n=4) -> rng
219+
srand([rng=GLOBAL_RNG], seed) -> rng
220+
srand([rng=GLOBAL_RNG]) -> rng
225221
226222
Reseed the random number generator. If a `seed` is provided, the RNG will give a
227223
reproducible sequence of numbers, otherwise Julia will get entropy from the system. For
228-
`MersenneTwister`, the `seed` may be a non-negative integer, a vector of `UInt32` integers
229-
or a filename, in which case the seed is read from a file (`4n` bytes are read from the file,
230-
where `n` is an optional argument). `RandomDevice` does not support seeding.
224+
`MersenneTwister`, the `seed` may be a non-negative integer or a vector of `UInt32` integers.
225+
`RandomDevice` does not support seeding.
231226
"""
232227
srand(r::MersenneTwister) = srand(r, make_seed())
233228
srand(r::MersenneTwister, n::Integer) = srand(r, make_seed(n))
234-
srand(r::MersenneTwister, filename::AbstractString, n::Integer=4) = srand(r, make_seed(filename, n))
235229

236230

237231
function dsfmt_gv_srand()
@@ -250,11 +244,6 @@ function srand(seed::Union{Integer, Vector{UInt32}})
250244
dsfmt_gv_srand()
251245
end
252246

253-
function srand(filename::AbstractString, n::Integer=4)
254-
srand(GLOBAL_RNG, filename, n)
255-
dsfmt_gv_srand()
256-
end
257-
258247
## Global RNG
259248

260249
const GLOBAL_RNG = MersenneTwister(0)

test/random.jl

-3
Original file line numberDiff line numberDiff line change
@@ -485,11 +485,8 @@ let g = Base.Random.GLOBAL_RNG,
485485
@test srand() === g
486486
@test srand(rand(UInt)) === g
487487
@test srand(rand(UInt32, rand(1:10))) === g
488-
@test srand(@__FILE__) === g
489-
@test srand(@__FILE__, rand(1:10)) === g
490488
@test srand(m) === m
491489
@test srand(m, rand(UInt)) === m
492490
@test srand(m, rand(UInt32, rand(1:10))) === m
493491
@test srand(m, rand(1:10)) === m
494-
@test srand(m, @__FILE__, rand(1:10)) === m
495492
end

0 commit comments

Comments
 (0)