polars_core/random.rs
1use std::sync::Mutex;
2
3use once_cell::sync::Lazy;
4use rand::prelude::*;
5
6static POLARS_GLOBAL_RNG_STATE: Lazy<Mutex<SmallRng>> =
7 Lazy::new(|| Mutex::new(SmallRng::from_entropy()));
8
9pub(crate) fn get_global_random_u64() -> u64 {
10 POLARS_GLOBAL_RNG_STATE.lock().unwrap().next_u64()
11}
12
13pub fn set_global_random_seed(seed: u64) {
14 *POLARS_GLOBAL_RNG_STATE.lock().unwrap() = SmallRng::seed_from_u64(seed);
15}