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

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);

Implementations

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 Clone for Triangular[src]

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 Copy for Triangular[src]

impl Debug for Triangular[src]

impl Distribution<f64> for Triangular[src]

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 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 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 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 Mode<f64> for Triangular[src]

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

Returns the mode of the triangular distribution

Formula

mode

impl PartialEq<Triangular> for Triangular[src]

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 StructuralPartialEq for Triangular[src]

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 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)

Auto Trait Implementations

impl RefUnwindSafe for Triangular

impl Send for Triangular

impl Sync for Triangular

impl Unpin for Triangular

impl UnwindSafe for Triangular

Blanket Implementations

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

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

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

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

impl<T, U> Into<U> for T where
    U: From<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<V, T> VZip<V> for T where
    V: MultiLane<T>, 
[src]