[][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

This example is not tested
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

This example is not tested
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

This example is not tested
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

This example is not tested
(min + max + mode) / 3

impl Variance<f64> for Triangular[src]

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

Returns the variance of the triangular distribution

Formula

This example is not tested
(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

This example is not tested
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

This example is not tested
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

This example is not tested
(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

This example is not tested
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

This example is not tested
mode

impl Copy for Triangular[src]

impl Clone for Triangular[src]

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

Performs copy-assignment from source. Read more

impl PartialEq<Triangular> for Triangular[src]

impl Debug for Triangular[src]

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

Auto Trait Implementations

impl Send for Triangular

impl Sync for Triangular

Blanket Implementations

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

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.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]