diff --git a/Cargo.lock b/Cargo.lock index 7e43137..60ba6e6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -817,6 +817,7 @@ dependencies = [ "log", "num-traits", "rand", + "rand_distr", "serde", "serde_json", ] diff --git a/Cargo.toml b/Cargo.toml index c011572..ccf8b67 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,6 +16,7 @@ faer = "0.19" log = "0.4" num-traits = "0.2" rand = "0.8" +rand_distr = "0.4.3" serde = "1" serde_json = "1" diff --git a/src/utils.rs b/src/utils.rs index 9f60fc6..5dcfdd2 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -7,14 +7,14 @@ use std::path::Path; use faer::{Col, ColRef, Mat, MatRef}; use num_traits::{FromBytes, ToBytes}; use rand::distributions::{Distribution, Uniform}; +use rand_distr::StandardNormal; use crate::consts::THETA_LOG_DIM; /// Generate a random orthogonal matrix from QR decomposition. pub fn gen_random_qr_orthogonal(dim: usize) -> Mat { let mut rng = rand::thread_rng(); - let uniform = Uniform::::new(0.0, 1.0); - let random = Mat::from_fn(dim, dim, |_, _| uniform.sample(&mut rng)); + let random: Mat = Mat::from_fn(dim, dim, |_, _| StandardNormal.sample(&mut rng)); random.qr().compute_q() }