On Thu, Dec 8, 2022 at 2:53 PM Paul Ramsey <pram...@cleverelephant.ca> wrote:
> > random_normal(stddev float8 DEFAULT 1.0, mean float8 DEFAULT 0.0) > Any particular justification for placing stddev before mean? A brief survey seems to indicate other libraries, as well as (at least for me) learned convention, has the mean be supplied first, then the standard deviation. The implementation/commentary seems to use that convention as well. Some suggestions: /* Apply optional user parameters */ - that isn't important or even what is happening though, and the body of the function shouldn't care about the source of the values for the variables it uses. Instead: /* Transform the normal standard variable (z) using the target normal distribution parameters */ Personally I'd probably make that even more explicit: + float8 z ... * z = pg_prng_double_normal(&drandom_seed) + /* ... */ * result = (stddev * z) + mean And a possible micro-optimization... + bool rescale = true + if (PG_NARGS() = 0) + rescale = false ... + if (rescale) ... result = (stddev * z) + mean + else + result = z David J.