use ndarray::Array2;
use rand::Rng;
use crate::{domain::SampleOptions, errors::CopulaError};
use super::{
VineCopula,
rosenblatt::{DEFAULT_CLIP_EPS, draw_uniform_matrix},
};
impl VineCopula {
pub(crate) fn sample_internal<R: Rng + ?Sized>(
&self,
n: usize,
rng: &mut R,
options: &SampleOptions,
) -> Result<Array2<f64>, CopulaError> {
let u = draw_uniform_matrix(rng, n, &self.variable_order, DEFAULT_CLIP_EPS);
self.inverse_rosenblatt(u.view(), options)
}
}