Skip to content

Commit e9f4721

Browse files
committed
UPD: Update rand and rand_distr
1 parent ddf77ac commit e9f4721

File tree

9 files changed

+49
-53
lines changed

9 files changed

+49
-53
lines changed

src/fuga/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ pub use crate::util::plot::*;
205205

206206
pub use anyhow;
207207
pub use paste;
208+
pub use rand::prelude::*;
208209

209210
// =============================================================================
210211
// Enums

src/macros/matlab_macro.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
extern crate rand;
2-
pub use self::rand::prelude::*;
3-
41
/// MATLAB like zeros - zero matrix
52
///
63
/// # Examples
@@ -45,18 +42,18 @@ macro_rules! zeros {
4542
#[macro_export]
4643
macro_rules! rand {
4744
() => {{
48-
let mut rng = thread_rng();
49-
rng.gen_range(0f64..=1f64)
45+
let mut rng = rand::rng();
46+
rng.random_range(0f64..=1f64)
5047
}};
5148

5249
( $m:expr, $n:expr ) => {{
5350
let r = $m;
5451
let c = $n;
55-
let mut rng = thread_rng();
52+
let mut rng = rand::rng();
5653
let mut m = matrix(vec![0f64; r * c], r, c, Row);
5754
for i in 0..r {
5855
for j in 0..c {
59-
m[(i, j)] = rng.gen_range(0f64..=1f64);
56+
m[(i, j)] = rng.random_range(0f64..=1f64);
6057
}
6158
}
6259
m

src/macros/r_macro.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@
1616
//! * `pt`
1717
//! * `lm`
1818
19-
extern crate rand;
20-
pub use self::rand::prelude::*;
21-
2219
/// R like concatenate (Type: Vec\<f64\>)
2320
///
2421
/// # Examples
@@ -278,10 +275,10 @@ macro_rules! runif {
278275
let n: usize = $x0;
279276
let mut v = vec![0f64; n];
280277

281-
let mut rng = thread_rng();
278+
let mut rng = rand::rng();
282279

283280
for i in 0..n {
284-
v[i] = rng.gen_range($start as f64..=$end as f64);
281+
v[i] = rng.random_range($start as f64..=$end as f64);
285282
}
286283
v
287284
}};

src/prelude/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,3 +229,4 @@ pub use crate::util::plot::*;
229229

230230
pub use anyhow;
231231
pub use paste;
232+
pub use rand::prelude::*;

src/statistics/dist.rs

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
//! * `sample_with_rng`: Extract samples with specific rng
2828
//! * `pdf` : Calculate pdf value at specific point
2929
//! ```no_run
30-
//! use rand::{Rng, distributions::uniform::SampleUniform};
30+
//! use rand::Rng;
31+
//! use rand_distr::uniform::SampleUniform;
3132
//! pub trait RNG {
3233
//! /// Extract samples of distributions
3334
//! fn sample(&self, n: usize) -> Vec<f64>;
@@ -228,9 +229,9 @@
228229
229230
extern crate rand;
230231
extern crate rand_distr;
231-
use rand_distr::WeightedAliasIndex;
232+
use rand_distr::weighted::WeightedAliasIndex;
232233

233-
use self::rand::distributions::uniform::SampleUniform;
234+
use self::rand_distr::uniform::SampleUniform;
234235
use self::rand::prelude::*;
235236
pub use self::OPDist::*;
236237
pub use self::TPDist::*;
@@ -521,7 +522,7 @@ impl<T: PartialOrd + SampleUniform + Copy + Into<f64>> ParametricDist for Weight
521522
pub trait RNG {
522523
/// Extract samples of distributions
523524
fn sample(&self, n: usize) -> Vec<f64> {
524-
let mut rng = thread_rng();
525+
let mut rng = rand::rng();
525526
self.sample_with_rng(&mut rng, n)
526527
}
527528

@@ -554,7 +555,7 @@ impl<T: PartialOrd + SampleUniform + Copy + Into<f64>> RNG for OPDist<T> {
554555
let mut v = vec![0f64; n];
555556

556557
for i in 0..n {
557-
let uniform = rng.gen_range(0f64..=1f64);
558+
let uniform = rng.random_range(0f64..=1f64);
558559
if uniform <= (*prob).into() {
559560
v[i] = 1f64;
560561
} else {
@@ -628,7 +629,7 @@ impl<T: PartialOrd + SampleUniform + Copy + Into<f64>> RNG for TPDist<T> {
628629
let mut v = vec![0f64; n];
629630

630631
for i in 0..n {
631-
v[i] = rng.gen_range(*start..=*end).into();
632+
v[i] = rng.random_range(*start..=*end).into();
632633
}
633634
v
634635
}
@@ -643,7 +644,7 @@ impl<T: PartialOrd + SampleUniform + Copy + Into<f64>> RNG for TPDist<T> {
643644
normal.sample_iter(rng).take(n).collect()
644645
}
645646
// Normal(m, s) => {
646-
// let mut rng = thread_rng();
647+
// let mut rng = rand::rng();
647648
// let mut v = vec![0f64; n];
648649
//
649650
// for i in 0..n {
@@ -656,8 +657,8 @@ impl<T: PartialOrd + SampleUniform + Copy + Into<f64>> RNG for TPDist<T> {
656657
beta.sample_iter(rng).take(n).collect()
657658
}
658659
// Beta(a, b) => {
659-
// let mut rng1 = thread_rng();
660-
// let mut rng2 = thread_rng();
660+
// let mut rng1 = rand::rng();
661+
// let mut rng2 = rand::rng();
661662
// let mut v = vec![0f64; n];
662663
//
663664
// let a_f64 = (*a).into();
@@ -670,8 +671,8 @@ impl<T: PartialOrd + SampleUniform + Copy + Into<f64>> RNG for TPDist<T> {
670671
// let mut iter_num = 0usize;
671672
//
672673
// while iter_num < n {
673-
// let u1 = rng1.gen_range(0f64, 1f64);
674-
// let u2 = rng2.gen_range(0f64, 1f64);
674+
// let u1 = rng1.random_range(0f64, 1f64);
675+
// let u2 = rng2.random_range(0f64, 1f64);
675676
//
676677
// if u2 <= 1f64 / c * self.pdf(u1) {
677678
// v[iter_num] = u1;
@@ -692,14 +693,14 @@ impl<T: PartialOrd + SampleUniform + Copy + Into<f64>> RNG for TPDist<T> {
692693
// let d = a_f64 - 1f64 / 3f64;
693694
// let c = 1f64 / (9f64 * d).sqrt();
694695
//
695-
// let mut rng1 = thread_rng();
696-
// let mut rng2 = thread_rng();
696+
// let mut rng1 = rand::rng();
697+
// let mut rng2 = rand::rng();
697698
//
698699
// let mut v = vec![0f64; n];
699700
// let mut iter_num = 0usize;
700701
//
701702
// while iter_num < n {
702-
// let u = rng1.gen_range(0f64, 1f64);
703+
// let u = rng1.random_range(0f64, 1f64);
703704
// let z = ziggurat(&mut rng2, 1f64);
704705
// let w = (1f64 + c * z).powi(3);
705706
//
@@ -804,7 +805,7 @@ impl RNG for WeightedUniform<f64> {
804805
ics.into_iter()
805806
.map(|idx| {
806807
let (l, r) = self.intervals[idx];
807-
rng.gen_range(l..=r)
808+
rng.random_range(l..=r)
808809
})
809810
.collect::<Vec<f64>>()
810811
}

src/statistics/rand.rs

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
//! use rand::prelude::*;
99
//!
1010
//! fn main() {
11-
//! let mut rng = thread_rng();
11+
//! let mut rng = rand::rng();
1212
//!
13-
//! let a = rng.gen_range(0f64..=1f64); // Generate random f64 number ranges from 0 to 1
13+
//! let a = rng.random_range(0f64..=1f64); // Generate random f64 number ranges from 0 to 1
1414
//! }
1515
//! ```
1616
//!
@@ -20,9 +20,8 @@
2020
//!
2121
//!
2222
23-
extern crate rand;
24-
use self::rand::distributions::uniform::SampleUniform;
25-
use self::rand::prelude::*;
23+
use rand_distr::uniform::SampleUniform;
24+
use rand::prelude::*;
2625

2726
use crate::statistics::dist::{WeightedUniform, RNG};
2827
#[allow(unused_imports)]
@@ -66,15 +65,15 @@ pub fn stdrng_from_seed(seed: u64) -> StdRng {
6665
/// ```
6766
/// use peroxide::fuga::*;
6867
///
69-
/// let mut rng = thread_rng();
68+
/// let mut rng = rand::rng();
7069
/// println!("{}", rand_num(&mut rng, 1, 7)); // Roll a die
7170
/// println!("{}", rand_num(&mut rng, 0f64, 1f64)); // Uniform [0,1)
7271
/// ```
7372
pub fn rand_num<T>(rng: &mut ThreadRng, start: T, end: T) -> T
7473
where
7574
T: PartialOrd + SampleUniform + Copy,
7675
{
77-
rng.gen_range(start..=end)
76+
rng.random_range(start..=end)
7877
}
7978

8079
// =============================================================================
@@ -89,8 +88,8 @@ pub fn marsaglia_polar(rng: &mut ThreadRng, m: f64, s: f64) -> f64 {
8988
let mut w = 0f64;
9089

9190
while w == 0. || w >= 1. {
92-
x1 = 2.0 * rng.gen_range(0f64..=1f64) - 1.0;
93-
x2 = 2.0 * rng.gen_range(0f64..=1f64) - 1.0;
91+
x1 = 2.0 * rng.random_range(0f64..=1f64) - 1.0;
92+
x2 = 2.0 * rng.random_range(0f64..=1f64) - 1.0;
9493
w = x1 * x1 + x2 * x2;
9594
}
9695

@@ -469,7 +468,7 @@ pub fn prs<F>(f: F, n: usize, (a, b): (f64, f64), m: usize, eps: f64) -> anyhow:
469468
where
470469
F: Fn(f64) -> f64 + Copy,
471470
{
472-
let mut rng = thread_rng();
471+
let mut rng = rand::rng();
473472

474473
let mut result = vec![0f64; n];
475474

@@ -484,7 +483,7 @@ where
484483
if weight <= 0f64 {
485484
continue;
486485
} else {
487-
let y = rng.gen_range(0f64..=weight);
486+
let y = rng.random_range(0f64..=weight);
488487

489488
if y <= f(x) {
490489
result[n - left_num] = x;
@@ -553,7 +552,7 @@ where
553552
if weight <= 0f64 {
554553
continue;
555554
} else {
556-
let y = rng.gen_range(0f64..=weight);
555+
let y = rng.random_range(0f64..=weight);
557556

558557
if y <= f(x) {
559558
result[n - left_num] = x;

src/util/non_macro.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ where
323323
///
324324
/// Range = from 0 to 1
325325
pub fn rand(r: usize, c: usize) -> Matrix {
326-
let mut rng = thread_rng();
326+
let mut rng = rand::rng();
327327
rand_with_rng(r, c, &mut rng)
328328
}
329329

@@ -333,7 +333,7 @@ pub fn rand(r: usize, c: usize) -> Matrix {
333333
///
334334
/// Range = from 0 to 1
335335
pub fn rand_with_rng<R: Rng>(r: usize, c: usize, rng: &mut R) -> Matrix {
336-
let uniform = Uniform::new_inclusive(0f64, 1f64);
336+
let uniform = Uniform::new_inclusive(0f64, 1f64).unwrap();
337337
rand_with_dist(r, c, rng, uniform)
338338
}
339339

src/util/print.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use crate::structure::{
1010
multinomial::Multinomial,
1111
polynomial::Polynomial,
1212
};
13-
use rand::distributions::uniform::SampleUniform;
13+
use rand_distr::uniform::SampleUniform;
1414
use std::fmt::{Debug, LowerExp, UpperExp};
1515

1616
pub trait Printable {

src/util/wrapper.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,87 +13,87 @@ pub trait SampleRNG {
1313
impl SampleRNG for Vec<usize> {
1414
type Item = usize;
1515
fn sample(&self, n: usize) -> Vec<Self::Item> {
16-
let mut rng = thread_rng();
16+
let mut rng = rand::rng();
1717
self.iter().map(|x| *x).choose_multiple(&mut rng, n)
1818
}
1919
}
2020

2121
impl SampleRNG for Vec<u32> {
2222
type Item = u32;
2323
fn sample(&self, n: usize) -> Vec<Self::Item> {
24-
let mut rng = thread_rng();
24+
let mut rng = rand::rng();
2525
self.iter().map(|x| *x).choose_multiple(&mut rng, n)
2626
}
2727
}
2828

2929
impl SampleRNG for Vec<u64> {
3030
type Item = u64;
3131
fn sample(&self, n: usize) -> Vec<Self::Item> {
32-
let mut rng = thread_rng();
32+
let mut rng = rand::rng();
3333
self.iter().map(|x| *x).choose_multiple(&mut rng, n)
3434
}
3535
}
3636

3737
impl SampleRNG for Vec<isize> {
3838
type Item = isize;
3939
fn sample(&self, n: usize) -> Vec<Self::Item> {
40-
let mut rng = thread_rng();
40+
let mut rng = rand::rng();
4141
self.iter().map(|x| *x).choose_multiple(&mut rng, n)
4242
}
4343
}
4444

4545
impl SampleRNG for Vec<i32> {
4646
type Item = i32;
4747
fn sample(&self, n: usize) -> Vec<Self::Item> {
48-
let mut rng = thread_rng();
48+
let mut rng = rand::rng();
4949
self.iter().map(|x| *x).choose_multiple(&mut rng, n)
5050
}
5151
}
5252

5353
impl SampleRNG for Vec<i64> {
5454
type Item = i64;
5555
fn sample(&self, n: usize) -> Vec<Self::Item> {
56-
let mut rng = thread_rng();
56+
let mut rng = rand::rng();
5757
self.iter().map(|x| *x).choose_multiple(&mut rng, n)
5858
}
5959
}
6060

6161
impl SampleRNG for Vec<f64> {
6262
type Item = f64;
6363
fn sample(&self, n: usize) -> Vec<Self::Item> {
64-
let mut rng = thread_rng();
64+
let mut rng = rand::rng();
6565
self.iter().map(|x| *x).choose_multiple(&mut rng, n)
6666
}
6767
}
6868

6969
impl SampleRNG for Vec<f32> {
7070
type Item = f32;
7171
fn sample(&self, n: usize) -> Vec<Self::Item> {
72-
let mut rng = thread_rng();
72+
let mut rng = rand::rng();
7373
self.iter().map(|x| *x).choose_multiple(&mut rng, n)
7474
}
7575
}
7676

7777
impl SampleRNG for Vec<char> {
7878
type Item = char;
7979
fn sample(&self, n: usize) -> Vec<Self::Item> {
80-
let mut rng = thread_rng();
80+
let mut rng = rand::rng();
8181
self.iter().map(|x| *x).choose_multiple(&mut rng, n)
8282
}
8383
}
8484

8585
impl<'a> SampleRNG for Vec<&'a str> {
8686
type Item = &'a str;
8787
fn sample(&self, n: usize) -> Vec<Self::Item> {
88-
let mut rng = thread_rng();
88+
let mut rng = rand::rng();
8989
self.iter().map(|x| *x).choose_multiple(&mut rng, n)
9090
}
9191
}
9292

9393
impl SampleRNG for String {
9494
type Item = char;
9595
fn sample(&self, n: usize) -> Vec<Self::Item> {
96-
let mut rng = thread_rng();
96+
let mut rng = rand::rng();
9797
self.chars().choose_multiple(&mut rng, n)
9898
}
9999
}

0 commit comments

Comments
 (0)