pub enum Distributions {
Uniform(Jiffies, Jiffies),
Bernoulli(f64, Jiffies),
Normal(Jiffies, Jiffies),
}Expand description
Probability distributions for modeling stochastic network behavior.
Distributions provides various probability distributions that can be used
to model realistic network characteristics in DScale simulations. Each
distribution generates values in Jiffies (simulation time units) and
is commonly used for latency modeling, though they can be applied to any
stochastic simulation parameter.
§Deterministic Randomness
All distributions use the simulation’s deterministic random number generator, ensuring that identical configurations with the same seed produce identical results. This is crucial for reproducible simulation experiments.
§Common Applications
- Network Latency: Model variable message delivery times
- Packet Loss: Simulate unreliable network conditions
- Jitter: Add realistic variation to timing
- Failure Models: Probabilistic component failures
- Load Variation: Variable processing times
§Usage in Network Configuration
Distributions are primarily used with LatencyDescription to configure
network topology characteristics:
use dscale::{SimulationBuilder, LatencyDescription, Distributions, Jiffies};
let simulation = SimulationBuilder::default()
.add_pool::<MyProcess>("servers", 3)
.latency_topology(&[
// Low-latency local network with small variation
LatencyDescription::WithinPool("servers",
Distributions::Uniform(Jiffies(1), Jiffies(5))),
// Internet latency with realistic variation
LatencyDescription::BetweenPools("clients", "servers",
Distributions::Normal(Jiffies(100), Jiffies(20))),
// Unreliable network with 10% packet loss
LatencyDescription::WithinPool("mobile",
Distributions::Bernoulli(0.9, Jiffies(50))),
])
.build();Variants§
Trait Implementations§
Source§impl Clone for Distributions
impl Clone for Distributions
Source§fn clone(&self) -> Distributions
fn clone(&self) -> Distributions
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for Distributions
Auto Trait Implementations§
impl Freeze for Distributions
impl RefUnwindSafe for Distributions
impl Send for Distributions
impl Sync for Distributions
impl Unpin for Distributions
impl UnsafeUnpin for Distributions
impl UnwindSafe for Distributions
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more