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