Thread[Unevaluated@f[{1, 2, 3}, 4]]

>     {1.946182809, 2.842898138, 3.571798651}
 
## Explanation

[Documentation of `Thread`][1]:

> `Thread` evaluates the whole expression before threading.

```
f[x_, y_] := x + y

Thread[f[{1, 2, 3}, 4]]
=> Thread[{1, 2, 3} + 4] (* Evaluates *)
=> Thread[{5, 6, 7}]
=> {5, 6, 7} (* Threads *)
```

```
f[x_, y_] := RandomReal[{x, y}]

Thread[f[{1, 2, 3}, 4]]
=> Thread[RandomReal[{1, 2, 3}, 4]] (* Evaluates *)
=> (* Error *)
```

```
f[x_, y_] := RandomReal[{x, y}]

Thread[Unevaluated@f[{1, 2, 3}, 4]]
=> Thread[f[{1, 2, 3}, 4]] (* Evaluates *)
=> {f[1,4],f[2,4],f[3,4]} (* Threads *)
=> ...
```


  [1]: https://wolfram.com/xid/0y791e-fpnhwv