The result, say `r`

, is `r <- x + runif(n, -a, a)`

where `n <- length(x)`

and `a`

is the `amount`

argument (if specified).

Let `z <- max(x) - min(x)`

(assuming the usual case).
The amount `a`

to be added is either provided as *positive*
argument `amount`

or otherwise computed from `z`

, as
follows:

If `amount == 0`

, we set `a <- factor * z/50`

(same as S).

If `amount`

is `NULL`

(*default*), we set
`a <- factor * d/5`

where *d* is the smallest
difference between adjacent unique (apart from fuzz) `x`

values.