```coffeescript
_ = require "underscore"
Transform = require "./transform"
p = require "../../core/properties"
math = require "../../core/util/math"

class Jitter extends Transform.Model
  initialize: (attrs, options) ->
    super(attrs, options)

  @define {
      mean:         [ p.Number, 0        ]
      width:        [ p.Number, 1        ]
      distribution: [ p.String, 'uniform']
    }

  compute: (x) ->
    # Apply the transform to a single value
    if @get('distribution') == 'uniform'
        return(x + @get('mean') + ((Math.random() - 0.5) * @get('width')))

    if @get('distribution') == 'normal'
        return(x + math.rnorm(@get('mean'), @get('width')))

  v_compute: (xs) ->
    # Apply the tranform to a vector of values
    result = new Float64Array(xs.length)
    for x, idx in xs
      result[idx] = this.compute(x)
    return result

module.exports =
  Model: Jitter```

Change imported name from "math" to "bokeh_math" to make it more obvious this is not related to the core JS "Math" facility.
user
```coffeescript
_ = require "underscore"
Transform = require "./transform"
p = require "../../core/properties"
bokeh_math = require "../../core/util/math"

class Jitter extends Transform.Model
  initialize: (attrs, options) ->
    super(attrs, options)

  @define {
      mean:         [ p.Number, 0        ]
      width:        [ p.Number, 1        ]
      distribution: [ p.String, 'uniform']
    }

  compute: (x) ->
    # Apply the transform to a single value
    if @get('distribution') == 'uniform'
        return(x + @get('mean') + ((Math.random() - 0.5) * @get('width')))

    if @get('distribution') == 'normal'
        return(x + bokeh_math.rnorm(@get('mean'), @get('width')))

  v_compute: (xs) ->
    # Apply the tranform to a vector of values
    result = new Float64Array(xs.length)
    for x, idx in xs
      result[idx] = this.compute(x)
    return result

module.exports =
  Model: Jitter```
assistant