# WARNING: Base.MersenneTwister is deprecated: it has been moved to the standard library package \`Random\`

**URL:** <https://discourse.julialang.org/t/warning-base-mersennetwister-is-deprecated-it-has-been-moved-to-the-standard-library-package-random/19842>\
**Category:** General Usage\
**Created:** [January 20, 2019, 1:45pm UTC](https://discourse.julialang.org/t/warning-base-mersennetwister-is-deprecated-it-has-been-moved-to-the-standard-library-package-random/19842 "2019-01-20T13:45:57Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![bsnyh](https://avatars.discourse-cdn.com/v4/letter/b/ce7236/32.png) [@bsnyh](https://discourse.julialang.org/u/bsnyh)\
**Post date:** [January 20, 2019, 1:45pm UTC](https://discourse.julialang.org/t/warning-base-mersennetwister-is-deprecated-it-has-been-moved-to-the-standard-library-package-random/19842/1 "2019-01-20T13:45:57Z")

</div>

I got this warning. Then, I did “using Random” and also “import Random”. But it did not work still. Can anyone please let me know what’s going on? I’m using Julia version 0.7.

```julia
julia> using Random

julia> rand(MersenneTwister(0), Dict(1=>2, 3=>4))
WARNING: Base.MersenneTwister is deprecated: it has been moved to the standard library package `Random`.
Add `using Random` to your imports.
 in module Main
1 => 2

julia> rng=MersenneTwister(1234)
WARNING: Base.MersenneTwister is deprecated: it has been moved to the standard library package `Random`.
Add `using Random` to your imports.
 in module Main
Random.MersenneTwister(UInt32[0x000004d2], Random.DSFMT.DSFMT_state(Int32[-1393240018, 1073611148, 45497681, 1072875908, 436273599, 1073674613, -2043716458, 1073445557, -254908435, 1072827086 … -599655111, 1073144102, 367655457, 1072985259, -1278750689, 1018350124, -597141475, 249849711, 382, 0]), [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 … 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], UInt128[0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000 … 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000], 1002, 0)

julia> import Random

julia> rng=MersenneTwister(1234)
WARNING: Base.MersenneTwister is deprecated: it has been moved to the standard library package `Random`.
Add `using Random` to your imports.
 in module Main
Random.MersenneTwister(UInt32[0x000004d2], Random.DSFMT.DSFMT_state(Int32[-1393240018, 1073611148, 45497681, 1072875908, 436273599, 1073674613, -2043716458, 1073445557, -254908435, 1072827086 … -599655111, 1073144102, 367655457, 1072985259, -1278750689, 1018350124, -597141475, 249849711, 382, 0]), [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 … 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], UInt128[0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000 … 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000], 1002, 0)

```

---

<div class="post-metadata">

**Author:** ![ssfrr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ssfrr/32/3736_2.png) [@ssfrr](https://discourse.julialang.org/u/ssfrr)\
**Post date:** [January 20, 2019, 2:07pm UTC](https://discourse.julialang.org/t/warning-base-mersennetwister-is-deprecated-it-has-been-moved-to-the-standard-library-package-random/19842/2 "2019-01-20T14:07:17Z")

</div>

Is that from a fresh Julia session? If not, try restarting Julia, then do `using Random` before you try to access `MersenneTwister`

---

<div class="post-metadata">

**Author:** ![bsnyh](https://avatars.discourse-cdn.com/v4/letter/b/ce7236/32.png) [@bsnyh](https://discourse.julialang.org/u/bsnyh)\
**Post date:** [January 20, 2019, 2:15pm UTC](https://discourse.julialang.org/t/warning-base-mersennetwister-is-deprecated-it-has-been-moved-to-the-standard-library-package-random/19842/3 "2019-01-20T14:15:00Z")

</div>

@ssfrr, great. it works this time. By the way, is there a uniform way/function call in julia 0.7 to generate a random number based on a given random number generator and a given probability distribution?

---

<div class="post-metadata">

**Author:** ![IljaK91](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/iljak91/32/44301_2.png) [@IljaK91](https://discourse.julialang.org/u/IljaK91)\
**Post date:** [January 20, 2019, 2:34pm UTC](https://discourse.julialang.org/t/warning-base-mersennetwister-is-deprecated-it-has-been-moved-to-the-standard-library-package-random/19842/4 "2019-01-20T14:34:09Z")

</div>

You can set a seed before generating the random numbers. For example with

```julia
using Random
Random.seed!(1234)

```

---

<div class="post-metadata">

**Author:** ![bsnyh](https://avatars.discourse-cdn.com/v4/letter/b/ce7236/32.png) [@bsnyh](https://discourse.julialang.org/u/bsnyh)\
**Post date:** [January 20, 2019, 2:40pm UTC](https://discourse.julialang.org/t/warning-base-mersennetwister-is-deprecated-it-has-been-moved-to-the-standard-library-package-random/19842/5 "2019-01-20T14:40:26Z")

</div>

@IljaK91, thank you so much for your quick reply. But the following is what I meant.

> [@A uniform way to generate a random element based on a given probability distritution function, a random number genarator and a given element interval?](https://discourse.julialang.org/t/a-uniform-way-to-generate-a-random-element-based-on-a-given-probability-distritution-function-a-random-number-genarator-and-a-given-element-interval/19843):
>
> Dispatching is one of Julia’s strong suits. I was wondering, is there a single function which would generate a random element based on a given probability distribution function, a random number genarator and a given element interval? I’m using Julia 0.7. If not, what are your suggestions? I’m talking about something similar to the fit\_mle(D, x, w) method in the DIstribution.jl. [Distributions.fit\_mle](https://juliastats.github.io/Distributions.jl/stable/fit.html#Distributions.fit_mle-Tuple%7BAny,Any,Any%7D) — Method. fit\_mle(D, x, w) Fit a distribution of type D to a weighted data set x , with …

---

<div class="post-metadata">

**Author:** ![carstenbauer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/carstenbauer/32/4981_2.png) [@carstenbauer](https://discourse.julialang.org/u/carstenbauer)\
**Post date:** [January 20, 2019, 2:40pm UTC](https://discourse.julialang.org/t/warning-base-mersennetwister-is-deprecated-it-has-been-moved-to-the-standard-library-package-random/19842/6 "2019-01-20T14:40:48Z")

</div>

```julia
julia> using Distributions, Random

julia> rng = MersenneTwister();

julia> dist = Normal(0.2, 0.01);

julia> rand(rng, dist)
0.2116549672938699

```

That’s what you mean?

---

<div class="post-metadata">

**Author:** ![bsnyh](https://avatars.discourse-cdn.com/v4/letter/b/ce7236/32.png) [@bsnyh](https://discourse.julialang.org/u/bsnyh)\
**Post date:** [January 20, 2019, 2:45pm UTC](https://discourse.julialang.org/t/warning-base-mersennetwister-is-deprecated-it-has-been-moved-to-the-standard-library-package-random/19842/7 "2019-01-20T14:45:18Z")

</div>

@carstenbauer, thank you. I think so. Will dig more about it.

---

<div class="post-metadata">

**Author:** ![bsnyh](https://avatars.discourse-cdn.com/v4/letter/b/ce7236/32.png) [@bsnyh](https://discourse.julialang.org/u/bsnyh)\
**Post date:** [January 20, 2019, 2:51pm UTC](https://discourse.julialang.org/t/warning-base-mersennetwister-is-deprecated-it-has-been-moved-to-the-standard-library-package-random/19842/8 "2019-01-20T14:51:53Z")

</div>

@carstenbauer, not good enough though.

```julia
julia> dist=Categorical([0.57,0.245,0.185])
Categorical{Float64}(K=3, p=[0.57, 0.245, 0.185])

julia> rand(rng,dist)
ERROR: ArgumentError: Sampler for this object is not defined
Stacktrace:
 [1] Random.Sampler(::Type{MersenneTwister}, ::Random.SamplerTrivial{Categorical{Float64},Any}, ::Val{1}) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v0.7/Random/src/Random.jl:134
 [2] Random.Sampler(::MersenneTwister, ::Random.SamplerTrivial{Categorical{Float64},Any}, ::Val{1}) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v0.7/Random/src/Random.jl:131
 [3] rand(::MersenneTwister, ::Random.SamplerTrivial{Categorical{Float64},Any}) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v0.7/Random/src/Random.jl:221 (repeats 2 times)
 [4] top-level scope at none:0

```

---

<div class="post-metadata">

**Author:** ![carstenbauer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/carstenbauer/32/4981_2.png) [@carstenbauer](https://discourse.julialang.org/u/carstenbauer)\
**Post date:** [January 20, 2019, 2:55pm UTC](https://discourse.julialang.org/t/warning-base-mersennetwister-is-deprecated-it-has-been-moved-to-the-standard-library-package-random/19842/9 "2019-01-20T14:55:21Z")

</div>

That seems strange to me, since `rand(Categorical([0.57,0.245,0.185]))` works fine. Maybe a bug/missing method?

---

<div class="post-metadata">

**Author:** ![bsnyh](https://avatars.discourse-cdn.com/v4/letter/b/ce7236/32.png) [@bsnyh](https://discourse.julialang.org/u/bsnyh)\
**Post date:** [January 20, 2019, 3:01pm UTC](https://discourse.julialang.org/t/warning-base-mersennetwister-is-deprecated-it-has-been-moved-to-the-standard-library-package-random/19842/10 "2019-01-20T15:01:14Z")

</div>

@carstenbauer, I do not think it’s a bug. rand function for the categorical distribution only use the default global random number generator. It does not support self-defined random number generator.

---

<div class="post-metadata">

**Author:** ![ssfrr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ssfrr/32/3736_2.png) [@ssfrr](https://discourse.julialang.org/u/ssfrr)\
**Post date:** [January 20, 2019, 3:01pm UTC](https://discourse.julialang.org/t/warning-base-mersennetwister-is-deprecated-it-has-been-moved-to-the-standard-library-package-random/19842/11 "2019-01-20T15:01:33Z")

</div>

Also, a small note - you seem to be pasting your code samples as a quote. It’ll display more nicely if you wrap it in triple-backticks, e.g.

````
```
<your code>
```

````

edit: (Whoops, that was in response to @bsnyh, not @carstenbauer)
