# Discrete Uniform

Discrete uniform distribution constructor.

## Usage

``````var DiscreteUniform = require( '@stdlib/math/base/dists/discrete-uniform/ctor' );
``````

#### DiscreteUniform( [a, b] )

Returns a discrete uniform distribution object.

``````var discreteUniform = new DiscreteUniform();

var mu = discreteUniform.mean;
// returns 0.5
``````

By default, `a = 0` and `b = 1`. To create a distribution having a different `a` (minimum support) and `b` (maximum support), provide parameter values.

``````var discreteUniform = new DiscreteUniform( 2, 4 );

var mu = discreteUniform.mean;
// returns 3.0
``````

## discreteUniform

A discrete uniform distribution object has the following properties and methods...

### Writable Properties

#### discreteUniform.a

Minimum support of the distribution. `a` must be an integer smaller than or equal to `b`.

``````var discreteUniform = new DiscreteUniform( -2, 2 );

var a = discreteUniform.a;
// returns -2

discreteUniform.a = 0;

a = discreteUniform.a;
// returns 0
``````

#### discreteUniform.b

Maximum support of the distribution. `b` must be an integer larger than or equal to `a`.

``````var discreteUniform = new DiscreteUniform( 2, 4 );

var b = discreteUniform.b;
// returns 4

discreteUniform.b = 3;

b = discreteUniform.b;
// returns 3
``````

### Computed Properties

#### DiscreteUniform.prototype.entropy

Returns the differential entropy.

``````var discreteUniform = new DiscreteUniform( 4, 12 );

var entropy = discreteUniform.entropy;
// returns ~2.197
``````

#### DiscreteUniform.prototype.kurtosis

Returns the excess kurtosis.

``````var discreteUniform = new DiscreteUniform( 4, 12 );

var kurtosis = discreteUniform.kurtosis;
// returns -1.23
``````

#### DiscreteUniform.prototype.mean

Returns the expected value.

``````var discreteUniform = new DiscreteUniform( 4, 12 );

var mu = discreteUniform.mean;
// returns 8.0
``````

#### DiscreteUniform.prototype.median

Returns the median.

``````var discreteUniform = new DiscreteUniform( 4, 12 );

var median = discreteUniform.median;
// returns 8.0
``````

#### DiscreteUniform.prototype.skewness

Returns the skewness.

``````var discreteUniform = new DiscreteUniform( 4, 12 );

var skewness = discreteUniform.skewness;
// returns 0.0
``````

#### DiscreteUniform.prototype.stdev

Returns the standard deviation.

``````var discreteUniform = new DiscreteUniform( 4, 12 );

var s = discreteUniform.stdev;
// returns ~2.582
``````

#### DiscreteUniform.prototype.variance

Returns the variance.

``````var discreteUniform = new DiscreteUniform( 4, 12 );

var s2 = discreteUniform.variance;
// returns ~6.667
``````

### Methods

#### DiscreteUniform.prototype.cdf( x )

Evaluates the cumulative distribution function (CDF).

``````var discreteUniform = new DiscreteUniform( 2, 4 );

var y = discreteUniform.cdf( 2.5 );
// returns ~0.333
``````

#### DiscreteUniform.prototype.logcdf( x )

Evaluates the natural logarithm of the cumulative distribution function (CDF).

``````var discreteUniform = new DiscreteUniform( 2, 4 );

var y = discreteUniform.logcdf( 2.5 );
// returns ~-1.099
``````

#### DiscreteUniform.prototype.logpmf( x )

Evaluates the natural logarithm of the probability mass function (PMF).

``````var discreteUniform = new DiscreteUniform( 2, 4 );

var y = discreteUniform.logpmf( 4.0 );
// returns ~-1.099
``````

#### DiscreteUniform.prototype.pmf( x )

Evaluates the probability mass function (PMF).

``````var discreteUniform = new DiscreteUniform( 2, 4 );

var y = discreteUniform.pmf( 3, 0 );
// returns ~0.333
``````

#### DiscreteUniform.prototype.quantile( p )

Evaluates the quantile function at probability `p`.

``````var discreteUniform = new DiscreteUniform( 2, 4 );

var y = discreteUniform.quantile( 0.5 );
// returns 3.0

y = quantile( 1.9 );
// returns NaN
``````

## Examples

``````var DiscreteUniform = require( '@stdlib/math/base/dists/discrete-uniform/ctor' );

var discreteUniform = new DiscreteUniform( -2, 2 );

var mu = discreteUniform.mean;
// returns 0.0

var median = discreteUniform.median;
// returns 0.0

var s2 = discreteUniform.variance;
// returns 2.0

var y = discreteUniform.cdf( 2.5 );
// returns 1.0
``````