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
26pub use crate::random::{DistributionExt, Rng, RngCore, SeedableRng, SliceRandom};
27
28// Most common distributions from rand_distr (with compatibility aliases)
29pub use crate::random::rand_distributions::{
30    Bernoulli, Beta as BetaDist, Exp as Exponential, Gamma, Normal, Uniform,
31};
32
33// Additional distributions commonly used in scientific computing
34pub use crate::random::{
35    Binomial, Cauchy, ChiSquared, FisherF, LogNormal, Poisson, RandDirichlet as DirichletDist,
36    StudentT, Weibull,
37};
38
39// Enhanced slice operations
40pub use crate::random::slice_ops::ScientificSliceRandom;
41
42// Sequence operations for compatibility
43pub use crate::random::seq;
44
45// Most commonly used specialized distributions
46pub use crate::random::{Beta, Categorical, WeightedChoice};
47
48// Essential array operations
49pub use crate::random::{random_normal_array, random_uniform_array, OptimizedArrayRandom};
50
51// High-level convenience functions
52pub use crate::random::convenience::{boolean, normal, normal_array, uniform, uniform_array};
53
54// Common type aliases for convenience
55pub type ThreadRng = Random<rand::rngs::ThreadRng>;
56pub type StdRng = Random<rand::rngs::StdRng>;
57pub type UniformDist = Uniform<f64>;
58pub type NormalDist = Normal<f64>;