EDIT ON: I’ll edit my answer for future reference as it is the most visible. As others have suggested below, the easiest way to do this is to just write

```
julia> rand([0, 1], 5, 5)
5×5 Array{Int64,2}:
0 1 0 0 0
0 1 0 0 1
0 1 0 0 0
0 0 0 0 0
1 1 1 1 0
```

or, alternatively, `rand(0:1, 5, 5)`

.

EDIT OFF: I’ll leave the rest of the post as it is. It might be still instructive about the use of dots and conversions.

You can create a 5x5 array of randomly generated values *between* 0 and 1 with:

```
julia> rand(5,5)
5×5 Array{Float64,2}:
0.974959 0.898156 0.639462 0.599058 0.360013
0.368191 0.322947 0.156321 0.762705 0.16691
0.977952 0.578899 0.0581204 0.470908 0.81315
0.505665 0.858624 0.39044 0.0380672 0.640897
0.36901 0.508695 0.737936 0.0884765 0.311747
```

Now you can `round()`

them and, to make sure the rounding is done “element-wise”, use the dot notation:

```
julia> round.(rand(5,5))
5×5 Array{Float64,2}:
0.0 1.0 1.0 0.0 1.0
1.0 1.0 0.0 0.0 0.0
1.0 0.0 0.0 0.0 0.0
0.0 1.0 1.0 1.0 0.0
1.0 1.0 0.0 1.0 0.0
```

Notice that, if you need the 0 and 1 to be integers instead of floats you can either do `Int.(round.(rand(5,5)))`

or `Int.(rand(Bool,5,5))`

(the latter will generate a 5x5 matrix of `true`

s and `falses`

s which can then be converted into zeros and ones.

There is no deep difference between an array and a matrix. A matrix is just a name for two-dimensional array (in the same way a vector is just a name for a one-dimensional array). In fact:

```
julia> typeof(Matrix(undef,5,5))
Array{Any,2}
```

Here is a link to the docs for the dotted syntax https://docs.julialang.org/en/stable/manual/mathematical-operations/#man-dot-operators-1

and also a blog post (if you want to know more): https://julialang.org/blog/2017/01/moredots

For more on arrays you can check the documentation: https://docs.julialang.org/en/stable/manual/arrays/