# Random julia v 1.7

**URL:** <https://discourse.julialang.org/t/random-julia-v-1-7/73444>\
**Category:** General Usage\
**Tags:** random\
**Created:** [December 21, 2021, 2:50pm UTC](https://discourse.julialang.org/t/random-julia-v-1-7/73444 "2021-12-21T14:50:55Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![monty](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/monty/32/44234_2.png) [@monty](https://discourse.julialang.org/u/monty)\
**Post date:** [December 21, 2021, 2:50pm UTC](https://discourse.julialang.org/t/random-julia-v-1-7/73444/1 "2021-12-21T14:50:55Z")

</div>

How to change the default random generator?

this works:

```julia
rng=Random.MersenneTwister(1); rand(rng)

```

however, i prefer to use `rand()` instead of `rand(rng)`.

is it possible? this does not work

```julia
Random.seed!(Random.MersenneTwister(), 2); rand()

```

suggestions?!

---

<div class="post-metadata">

**Author:** ![jw3126](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jw3126/32/3086_2.png) [@jw3126](https://discourse.julialang.org/u/jw3126)\
**Post date:** [December 21, 2021, 2:58pm UTC](https://discourse.julialang.org/t/random-julia-v-1-7/73444/2 "2021-12-21T14:58:44Z")

</div>

My recommendation is to pass `rng` explicitly. However if you really want to have it implicit you could do:

```julia
import Random
const RNG = Random.MersenneTwister(1)
rand(args...) = Random.rand(RNG, args...)

```

---

<div class="post-metadata">

**Author:** ![jakobnissen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jakobnissen/32/13477_2.png) [@jakobnissen](https://discourse.julialang.org/u/jakobnissen)\
**Post date:** [December 21, 2021, 4:19pm UTC](https://discourse.julialang.org/t/random-julia-v-1-7/73444/3 "2021-12-21T16:19:12Z")

</div>

Just use `seed!` without passing an RNG in, and it will seed the default RNG:

```julia
julia> Random.seed!(0)
TaskLocalRNG()

julia> rand()
0.4056994708920292

julia> Random.seed!(0)
TaskLocalRNG()

julia> rand()
0.4056994708920292

```

---

<div class="post-metadata">

**Author:** ![Oscar\_Smith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oscar_smith/32/25343_2.png) [@Oscar\_Smith](https://discourse.julialang.org/u/Oscar_Smith)\
**Post date:** [December 21, 2021, 4:21pm UTC](https://discourse.julialang.org/t/random-julia-v-1-7/73444/4 "2021-12-21T16:21:12Z")

</div>

Also, why do you want to use `MersenneTwister`? It’s pretty much strictly worse than the new one.

---

<div class="post-metadata">

**Author:** ![monty](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/monty/32/44234_2.png) [@monty](https://discourse.julialang.org/u/monty)\
**Post date:** [December 22, 2021, 3:38pm UTC](https://discourse.julialang.org/t/random-julia-v-1-7/73444/5 "2021-12-22T15:38:11Z")

</div>

Because I have old results that need to be reproducible.

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [December 22, 2021, 5:40pm UTC](https://discourse.julialang.org/t/random-julia-v-1-7/73444/6 "2021-12-22T17:40:26Z")

</div>

[https://docs.julialang.org/en/v1/stdlib/Random/#Reproducibility](https://docs.julialang.org/en/v1/stdlib/Random/#Reproducibility)

---

<div class="post-metadata">

**Author:** ![monty](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/monty/32/44234_2.png) [@monty](https://discourse.julialang.org/u/monty)\
**Post date:** [December 22, 2021, 6:59pm UTC](https://discourse.julialang.org/t/random-julia-v-1-7/73444/7 "2021-12-22T18:59:15Z")

</div>

I still think might be nice to be able to change the default RNG.

---

<div class="post-metadata">

**Author:** ![rfourquet](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rfourquet/32/3610_2.png) [@rfourquet](https://discourse.julialang.org/u/rfourquet)\
**Post date:** [December 23, 2021, 10:18am UTC](https://discourse.julialang.org/t/random-julia-v-1-7/73444/8 "2021-12-23T10:18:43Z")

</div>

If you really want, you can redefine some methods, but I don’t recommend it:

```julia
julia> rng = MersenneTwister(0); Random.default_rng() = rng; rand()
0.8236475079774124

julia> Random.seed!(0); rand()
0.8236475079774124

```

Other methods might need to be redefined, see the file “stdlib/Random/src/RNGs.jl” for details. Also this will need more work if you want to be thread-safe.

There was a discussion about allowing changing the default RNG, if you are interested, at [https://github.com/JuliaLang/julia/pull/23205](https://github.com/JuliaLang/julia/pull/23205).

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [December 23, 2021, 11:17am UTC](https://discourse.julialang.org/t/random-julia-v-1-7/73444/9 "2021-12-23T11:17:35Z")

</div>

This is unfortunately completely at odds with having the default RNG be fast, so it isn’t supported and likely won’t be. Consider: if the default RNG type is changeable, that would prevent inlining calls to it or specializing on the type in any way. So, if you need reproducibility of exact RNG streams, you’ll need to explicitly pass RNG arguments around.

---

<div class="post-metadata">

**Author:** ![dilumaluthge](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dilumaluthge/32/29283_2.png) [@dilumaluthge](https://discourse.julialang.org/u/dilumaluthge)\
**Post date:** [December 24, 2021, 1:52am UTC](https://discourse.julialang.org/t/random-julia-v-1-7/73444/10 "2021-12-24T01:52:15Z")

</div>

See also:

> **[GitHub - JuliaRandom/StableRNGs.jl: A Julia RNG with stable streams](https://github.com/JuliaRandom/StableRNGs.jl)**
>
> A Julia RNG with stable streams. Contribute to JuliaRandom/StableRNGs.jl development by creating an account on GitHub.

---

<div class="post-metadata">

**Author:** ![monty](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/monty/32/44234_2.png) [@monty](https://discourse.julialang.org/u/monty)\
**Post date:** [December 27, 2021, 5:25pm UTC](https://discourse.julialang.org/t/random-julia-v-1-7/73444/11 "2021-12-27T17:25:02Z")

</div>

Thank you very much! This is a very helpful discussion. I agree with your comments. I made changes in the code to explicitly pass RNG arguments.
