Skip to main content

scirs2_core/random/
prelude.rs

1//! Prelude module for scirs2-core random functionality
2//!
3//! This module provides the most commonly used items for random number generation,
4//! following Rust conventions for prelude modules. Import this for quick access
5//! to essential functionality.
6//!
7//! # Usage
8//!
9//! ```rust
10//! use scirs2_core::random::prelude::*;
11//! use ::ndarray::Ix2;
12//!
13//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
14//! // Now you have access to the most common random functionality
15//! let mut rng = thread_rng();
16//! let value = rng.sample(Uniform::new(0.0, 1.0)?);
17//! let array = random_uniform_array(Ix2(100, 100), &mut rng);
18//! # Ok(())
19//! # }
20//! ```
21
22// Core random number generation
23pub use crate::random::core::{seeded_rng, thread_rng, Random};
24
25// Essential traits
26#[allow(deprecated)]
27pub use crate::random::{DistributionExt, Rng, RngCore, RngExt, SeedableRng, SliceRandom};
28
29// Most common distributions from rand_distr (with compatibility aliases)
30pub use crate::random::rand_distributions::{
31    Bernoulli, Beta as BetaDist, Exp as Exponential, Gamma, Normal, Uniform,
32};
33
34// Additional distributions commonly used in scientific computing
35pub use crate::random::{
36    Binomial, Cauchy, ChiSquared, FisherF, LogNormal, Poisson, RandDirichlet as DirichletDist,
37    StudentT, Weibull,
38};
39
40// Enhanced slice operations
41pub use crate::random::slice_ops::ScientificSliceRandom;
42
43// Sequence operations for compatibility
44pub use crate::random::seq;
45
46// Most commonly used specialized distributions
47pub use crate::random::{Beta, Categorical, WeightedChoice};
48
49// Essential array operations
50pub use crate::random::{random_normal_array, random_uniform_array, OptimizedArrayRandom};
51
52// High-level convenience functions
53pub use crate::random::convenience::{boolean, normal, normal_array, uniform, uniform_array};
54
55// Common type aliases for convenience
56pub type ThreadRng = Random<rand::rngs::ThreadRng>;
57pub type StdRng = Random<rand::rngs::StdRng>;
58pub type UniformDist = Uniform<f64>;
59pub type NormalDist = Normal<f64>;