I agree with you about Quiet
. I virtually never use it. What you use depends on exactly what you're trying to optimize or be efficient about, and that's still not clear to me, but here are some alternatives.
(* to have a clear, consistent place to change arguments... *)
With[
{m = 20, s = 10},
RandomVariate[NormalDistribution[m, s]]]
(* to repeat same test with several different argument lists... *)
testCases = {{20, 10}, {30, 10}, {40, 20}};
RandomVariate[NormalDistribution[#[[1]], #[[2]]]] & /@ testCases
(* fancier version of previous... *)
RandomVariate@*Apply[NormalDistribution] /@ testCases
(* table-based version of same idea... *)
Table[RandomVariate[NormalDistribution @@ x], {x, testCases}]
(* to avoid repeating same arguments for several functions... *)
Through[{fnA, fnB, fnC}[m, s]]
(* or if you really want to keep the ReplaceAll, this is slightly less verbose than Hold/ReleaseHold...*)
Unevaluated[RandomVariate[NormalDistribution[m, s]]] /. {m -> 20, s -> 10}