polars_core/
random.rs

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