# \[ANN\] RandomExtensions.jl - randomness for all

**URL:** <https://discourse.julialang.org/t/ann-randomextensions-jl-randomness-for-all/22537>\
**Category:** Package Announcements\
**Created:** [March 30, 2019, 12:13pm UTC](https://discourse.julialang.org/t/ann-randomextensions-jl-randomness-for-all/22537 "2019-03-30T12:13:50Z")\
**Posts on this page:** 1\
**Page:** 1

<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:** [March 30, 2019, 12:13pm UTC](https://discourse.julialang.org/t/ann-randomextensions-jl-randomness-for-all/22537/1 "2019-03-30T12:13:51Z")

</div>

I’m very pleased to announce the **[RandomExtensions.jl](https://github.com/rfourquet/RandomExtensions.jl)** package: this started out as a PR against the `Random` module before the 1.0 release of Julia, which was wisely not merged.  
But after a couple more iterations on the design, it now feels ready for public consumption. My hope is that user feed-back will allow eventually to incorporate back some functionalities into `Random`, in some form or another.

Essentially, it allows to create new “scalars”, like pairs or tuples, via a `make` function:

```julia
julia> rand(make(Tuple, 1:9, UInt8, String))
(2, 0xf4, "0CLgPODQ")

```

and extends the rand API to allow creating other containers than arrays:

```julia
julia> rand(make(Pair, 1:9, UInt8), Dict, 3)
Dict{Int64,UInt8} with 3 entries:
  9 => 0xc4
  3 => 0x92
  5 => 0x11

```

This is of course easily extensible for user-defined types. See the README for more examples. Bug reports and contributions (code or ideas) are very welcome!
