# [−][src]Struct statrs::distribution::Triangular

`pub struct Triangular { /* fields omitted */ }`

Implements the Triangular distribution

# Examples

```use statrs::distribution::{Triangular, Continuous};
use statrs::statistics::Mean;

let n = Triangular::new(0.0, 5.0, 2.5).unwrap();
assert_eq!(n.mean(), 7.5 / 3.0);
assert_eq!(n.pdf(2.5), 5.0 / 12.5);```

## Methods

### `impl Triangular`[src]

#### `pub fn new(min: f64, max: f64, mode: f64) -> Result<Triangular>`[src]

Constructs a new triangular distribution with a minimum of `min`, maximum of `max`, and a mode of `mode`.

# Errors

Returns an error if `min`, `max`, or `mode` are `NaN` or `±INF`. Returns an error if `max < mode`, `mode < min`, or `max == min`.

# Examples

```use statrs::distribution::Triangular;

let mut result = Triangular::new(0.0, 5.0, 2.5);
assert!(result.is_ok());

result = Triangular::new(2.5, 1.5, 0.0);
assert!(result.is_err());```

## Trait Implementations

### `impl Univariate<f64, f64> for Triangular`[src]

#### `fn cdf(&self, x: f64) -> f64`[src]

Calculates the cumulative distribution function for the triangular distribution at `x`

# Formula

```if x == min {
0
} if min < x <= mode {
(x - min)^2 / ((max - min) * (mode - min))
} else if mode < x < max {
1 - (max - min)^2 / ((max - min) * (max - mode))
} else {
1
}```

### `impl Continuous<f64, f64> for Triangular`[src]

#### `fn pdf(&self, x: f64) -> f64`[src]

Calculates the probability density function for the triangular distribution at `x`

# Formula

```if x < min {
0
} else if min <= x <= mode {
2 * (x - min) / ((max - min) * (mode - min))
} else if mode < x <= max {
2 * (max - x) / ((max - min) * (max - mode))
} else {
0
}```

#### `fn ln_pdf(&self, x: f64) -> f64`[src]

Calculates the log probability density function for the triangular distribution at `x`

# Formula

```ln( if x < min {
0
} else if min <= x <= mode {
2 * (x - min) / ((max - min) * (mode - min))
} else if mode < x <= max {
2 * (max - x) / ((max - min) * (max - mode))
} else {
0
} )```

### `impl Min<f64> for Triangular`[src]

#### `fn min(&self) -> f64`[src]

Returns the minimum value in the domain of the triangular distribution representable by a double precision float

# Remarks

The return value is the same min used to construct the distribution

### `impl Max<f64> for Triangular`[src]

#### `fn max(&self) -> f64`[src]

Returns the maximum value in the domain of the triangular distribution representable by a double precision float

# Remarks

The return value is the same max used to construct the distribution

### `impl Mean<f64> for Triangular`[src]

#### `fn mean(&self) -> f64`[src]

Returns the mean of the triangular distribution

# Formula

`(min + max + mode) / 3`

### `impl Variance<f64> for Triangular`[src]

#### `fn variance(&self) -> f64`[src]

Returns the variance of the triangular distribution

# Formula

`(min^2 + max^2 + mode^2 - min * max - min * mode - max * mode) / 18`

#### `fn std_dev(&self) -> f64`[src]

Returns the standard deviation of the triangular distribution

# Formula

```sqrt((min^2 + max^2 + mode^2 - min * max - min * mode - max * mode) /
18)```

### `impl Entropy<f64> for Triangular`[src]

#### `fn entropy(&self) -> f64`[src]

Returns the entropy of the triangular distribution

# Formula

`1 / 2 + ln((max - min) / 2)`

### `impl Skewness<f64> for Triangular`[src]

#### `fn skewness(&self) -> f64`[src]

Returns the skewness of the triangular distribution

# Formula

```(sqrt(2) * (min + max - 2 * mode) * (2 * min - max - mode) * (min - 2 *
max + mode)) /
( 5 * (min^2 + max^2 + mode^2 - min * max - min * mode - max * mode)^(3
/ 2))```

### `impl Median<f64> for Triangular`[src]

#### `fn median(&self) -> f64`[src]

Returns the median of the triangular distribution

# Formula

```if mode >= (min + max) / 2 {
min + sqrt((max - min) * (mode - min) / 2)
} else {
max - sqrt((max - min) * (max - mode) / 2)
}```

### `impl Mode<f64> for Triangular`[src]

#### `fn mode(&self) -> f64`[src]

Returns the mode of the triangular distribution

# Formula

`mode`

### `impl Clone for Triangular`[src]

#### `fn clone_from(&mut self, source: &Self)`1.0.0[src]

Performs copy-assignment from `source`. Read more

### `impl Distribution<f64> for Triangular`[src]

#### `fn sample_iter<R>(&'a self, rng: &'a mut R) -> DistIter<'a, Self, R, T> where    R: Rng, `[src]

Create an iterator that generates random values of `T`, using `rng` as the source of randomness. Read more

## Blanket Implementations

### `impl<T> ToOwned for T where    T: Clone, `[src]

#### `type Owned = T`

The resulting type after obtaining ownership.

### `impl<T, U> TryFrom<U> for T where    U: Into<T>, `[src]

#### `type Error = Infallible`

The type returned in the event of a conversion error.

### `impl<T, U> TryInto<U> for T where    U: TryFrom<T>, `[src]

#### `type Error = <U as TryFrom<T>>::Error`

The type returned in the event of a conversion error.