Random Module
Random variate generation and stream management for reproducible simulations.
RandomGenerator
Primary random number generator with 20+ distributions.
- class simcraft.RandomGenerator[source]
Bases:
objectRandom variate generator with common distributions.
Wraps Python’s random module with additional distributions and seeding capabilities for reproducible simulations.
- Parameters:
seed (Optional[int]) – Random seed for reproducibility
Examples
>>> rng = RandomGenerator(seed=42) >>> service_time = rng.exponential(5.0) >>> batch_size = rng.poisson(10) >>> priority = rng.choice([1, 2, 3], weights=[0.5, 0.3, 0.2])
- set_state(state)[source]
Restore RNG state from checkpoint.
- Parameters:
state (tuple)
- Return type:
None
- negative_binomial(r, p)[source]
Negative binomial distribution.
Number of failures before r successes.
- choice(population, weights=None)[source]
Random selection from population.
- Parameters:
population (Sequence[T]) – Items to choose from
weights (Optional[Sequence[float]]) – Selection weights
- Returns:
Selected item
- Return type:
T
- sample(population, k)[source]
Random sample without replacement.
- Parameters:
population (Sequence[T]) – Items to sample from
k (int) – Sample size
- Returns:
Sampled items
- Return type:
List[T]
- shuffle(x)[source]
Shuffle list in place.
- Parameters:
x (List[T]) – List to shuffle
- Return type:
None
- shuffled(x)[source]
Return shuffled copy.
- Parameters:
x (Sequence[T]) – Sequence to shuffle
- Returns:
Shuffled copy
- Return type:
List[T]
- empirical_continuous(breakpoints, probabilities)[source]
Empirical continuous distribution (piecewise linear).
Stream Management
Named streams with checkpointing for variance reduction techniques.
- class simcraft.random.streams.RandomStream[source]
Bases:
RandomGeneratorNamed random stream with checkpointing.
Extends RandomGenerator with stream identification and state management for reproducibility.
Examples
>>> arrival_stream = RandomStream("arrivals", seed=100) >>> service_stream = RandomStream("service", seed=200) >>> >>> # Save and restore state >>> state = arrival_stream.checkpoint() >>> # ... run simulation ... >>> arrival_stream.restore(state)
- restore(checkpoint)[source]
Restore from checkpoint.
- Parameters:
checkpoint (dict) – Checkpoint data
- Return type:
None
- class simcraft.random.streams.StreamManager[source]
Bases:
objectManages multiple random streams for a simulation.
Provides centralized stream management, seeding strategies, and synchronization for variance reduction techniques.
- Parameters:
base_seed (Optional[int]) – Base seed for stream generation
Examples
>>> manager = StreamManager(base_seed=42) >>> >>> # Get or create streams >>> arrivals = manager.get_stream("arrivals") >>> service = manager.get_stream("service") >>> >>> # Antithetic variates >>> manager.enable_antithetic() >>> value1 = arrivals.uniform() # U >>> value2 = arrivals.uniform() # 1-U (antithetic)
- __init__(base_seed=None)[source]
Initialize stream manager.
- Parameters:
base_seed (int | None)
- Return type:
None
- get_stream(name)[source]
Get or create a named stream.
- Parameters:
name (str) – Stream name
- Returns:
The stream
- Return type:
- create_stream(name, seed=None)[source]
Create a new stream with explicit seed.
- Parameters:
- Returns:
The new stream
- Return type:
- class simcraft.random.streams.CommonRandomNumbers[source]
Bases:
objectHelper for common random numbers (CRN) technique.
Synchronizes random streams across multiple simulation runs for variance reduction in comparing alternatives.
Examples
>>> crn = CommonRandomNumbers(base_seed=42) >>> >>> # Run alternative 1 >>> crn.reset() >>> results1 = run_simulation(crn.get_stream("arrivals")) >>> >>> # Run alternative 2 with same random numbers >>> crn.reset() >>> results2 = run_simulation(crn.get_stream("arrivals"))
- __init__(base_seed=42)[source]
Initialize CRN helper.
- Parameters:
base_seed (int)
- Return type:
None
- save_checkpoint(name='default')[source]
Save current stream states.
- Parameters:
name (str)
- Return type:
None
Alternative Generators
- class simcraft.random.distributions.LCG[source]
Bases:
objectLinear Congruential Generator (for compatibility).
Implements the LCG from the WSC challenges for reproducibility.
- Parameters:
seed (int) – Initial seed
Examples
>>> lcg = LCG(seed=12345) >>> value = lcg.uniform()
- MULTIPLIER = 1103515245
- INCREMENT = 12345
- MODULUS = 2147483648