# Vectorization and Minor Random Number Issues

**URL:** <https://discourse.julialang.org/t/vectorization-and-minor-random-number-issues/9137>\
**Category:** General Usage\
**Created:** [February 18, 2018, 3:09am UTC](https://discourse.julialang.org/t/vectorization-and-minor-random-number-issues/9137 "2018-02-18T03:09:34Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![gideonsimpson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gideonsimpson/32/1928_2.png) [@gideonsimpson](https://discourse.julialang.org/u/gideonsimpson)\
**Post date:** [February 18, 2018, 3:09am UTC](https://discourse.julialang.org/t/vectorization-and-minor-random-number-issues/9137/1 "2018-02-18T03:09:34Z")

</div>

Consider the following code:

```julia
srand(1234);
x = zeros(2);
y = zeros(2);
A = 3.5;
y.=x.+ A * randn.()
srand(1234);
x = zeros(2);
y = zeros(2);
B = 3.5;
y.=x.+ A .* randn.()

```

The first piece produces

```julia
2-element Array{Float64,1}:
 3.03572
 3.03572

```

while the second produces:

```julia
2-element Array{Float64,1}:
  3.03572
 -3.1561 

```

It is this latter version that I exepcted. While I can appreciate why this is happening, it’s quite easy to forget a `.`, which could result in some very bad behavior with stochastic problems.

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [February 18, 2018, 3:46am UTC](https://discourse.julialang.org/t/vectorization-and-minor-random-number-issues/9137/2 "2018-02-18T03:46:30Z")

</div>

> [@gideonsimpson](#):
>
> it’s quite easy to forget a .

Use `@.`

---

<div class="post-metadata">

**Author:** ![y4lu](https://avatars.discourse-cdn.com/v4/letter/y/47e85d/32.png) [@y4lu](https://discourse.julialang.org/u/y4lu)\
**Post date:** [February 18, 2018, 3:59am UTC](https://discourse.julialang.org/t/vectorization-and-minor-random-number-issues/9137/3 "2018-02-18T03:59:14Z")

</div>

Or `randn(2)` is probably nicer  
Also isn’t it breaking the bimdas rules? ie randn.() has to jump a `.*` and a `.+` to know it needs 2 elements?

transpose is a bit interesting too

> `[0; 0] .+2 .* randn.()' .+ [0 0]; __ ~= randn(1)`  
> ` [0; 0] .+2 .* randn.() .+ [0 0]; ___ ~= randn(2, 2)`

---

<div class="post-metadata">

**Author:** ![y4lu](https://avatars.discourse-cdn.com/v4/letter/y/47e85d/32.png) [@y4lu](https://discourse.julialang.org/u/y4lu)\
**Post date:** [February 18, 2018, 10:17am UTC](https://discourse.julialang.org/t/vectorization-and-minor-random-number-issues/9137/4 "2018-02-18T10:17:37Z")

</div>

`zeros()` and `zeros.()` don’t seem to behave very well either (0 dim arrays with a value in?)

> `[5 5 5] .+ zeros.();` → Array{Array{Float64, 0}, 2} [5.0 5.0 5.0]  
> `[5 5 5] .+ zeros.(0)` → Array{Array{Float64, 1}, 2} [Float64 Float64 Float64]  
> `[5 5 5] .+ zeros.(1)` → Array{Array{Float64, 1}, 2} [[5.0] [5.0] [5.0]]

---

<div class="post-metadata">

**Author:** ![gideonsimpson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gideonsimpson/32/1928_2.png) [@gideonsimpson](https://discourse.julialang.org/u/gideonsimpson)\
**Post date:** [February 18, 2018, 3:42pm UTC](https://discourse.julialang.org/t/vectorization-and-minor-random-number-issues/9137/5 "2018-02-18T15:42:20Z")

</div>

Is there a full discussion somewhere of `@.` and related approaches to vectorization?

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [February 18, 2018, 3:49pm UTC](https://discourse.julialang.org/t/vectorization-and-minor-random-number-issues/9137/6 "2018-02-18T15:49:32Z")

</div>

> [@gideonsimpson](#):
>
> Is there a full discussion somewhere of @. and related approaches to vectorization?

> **[More Dots: Syntactic Loop Fusion in Julia](https://julialang.org/blog/2017/01/moredots/)**
>
> More Dots: Syntactic Loop Fusion in Julia | After a lengthy design process (https://github.com/JuliaLang/julia/issues/8450) and preliminary foundations in Julia 0.5 (/blog/2016-10-11-julia-0.5-highlights#vectorized\_function\_calls), Julia 0.6 includes...
