reference_interval/
normal.rs

1use num_traits::{Float, NumCast};
2use crate::mean::mean;
3use crate::standard_deviation::standard_deviation;
4use rand_distr::{Distribution, Normal, StandardNormal};
5
6// Calculate the mean of two numbers, with special handling for overflow cases.
7#[allow(dead_code)]
8pub fn normal<F>(lower: F, upper: F) -> Normal<F> 
9where
10    F: Float + NumCast,
11    StandardNormal: Distribution<F>
12{
13    Normal::new(mean(lower, upper), standard_deviation(lower, upper)).expect("Normal::new")
14}
15
16#[cfg(test)]
17mod tests {
18    use super::*;
19
20    #[test]
21    fn test() {
22        let mut rng = rand::rng();
23        let normal = normal(11.0, 97.0);
24        let sample = normal.sample(&mut rng);
25        assert!(sample > 0.0);
26    }
27
28}