monte_carlo
monte_carlo
Section titled “monte_carlo”The monte_carlo module provides a small framework for running Monte Carlo
simulations, including variance-reduction techniques (antithetic variates,
control variates, stratified sampling) and summary statistics.
Import
Section titled “Import”use std::core::monte_carloConfiguration
Section titled “Configuration”MonteCarloConfig controls run behavior:
| Field | Type | Description |
|---|---|---|
seed | int | RNG seed; 0 leaves the global RNG untouched |
collect_results | bool | Whether to accumulate per-trial results |
Plain Monte Carlo
Section titled “Plain Monte Carlo”monte_carlo::monte_carlo(n_sims, sim_fn, config?)
Section titled “monte_carlo::monte_carlo(n_sims, sim_fn, config?)”Run sim_fn(i, config) for i in 0..n_sims. Returns
{ simulations: int, results: Array<_> }.
use std::core::monte_carlo
let report = monte_carlo::monte_carlo(1000, |i, cfg| { let u = random() if u < 0.5 { 1.0 } else { 0.0 }})
print(f"simulations: {report.simulations}")Variance Reduction
Section titled “Variance Reduction”monte_carlo::monte_carlo_antithetic(n_sims, sim_fn, config?)
Section titled “monte_carlo::monte_carlo_antithetic(n_sims, sim_fn, config?)”Pairs each random draw with its complement (1 - U) to reduce variance via
negative correlation. sim_fn(i, is_antithetic) should return a number;
results are pair averages. Total evaluations = 2 * n_sims.
monte_carlo::monte_carlo_control_variate(n_sims, sim_fn, control_mean, config?)
Section titled “monte_carlo::monte_carlo_control_variate(n_sims, sim_fn, control_mean, config?)”Reduces variance by exploiting a known-mean control variate. sim_fn(i) must
return { value: number, control: number }. The returned record includes
adjusted_mean and variance_reduction (fraction of variance removed).
monte_carlo::monte_carlo_stratified(n_sims, sim_fn, config?)
Section titled “monte_carlo::monte_carlo_stratified(n_sims, sim_fn, config?)”Divides [0, 1) into n_sims equal strata and draws one sample per stratum.
sim_fn(i, u) receives a uniform u in [i/n, (i+1)/n).
Summary Statistics
Section titled “Summary Statistics”monte_carlo::monte_carlo_stats(results)
Section titled “monte_carlo::monte_carlo_stats(results)”Compute a summary record from a results array:
| Field | Description |
|---|---|
count | Number of samples |
mean, std, min, max | Standard summaries |
p5, p50, p95 | 5th / 50th / 95th percentiles |
ci_low, ci_high | 95% confidence-interval bounds |
let report = monte_carlo::monte_carlo(10000, |i, cfg| random())let stats = monte_carlo::monte_carlo_stats(report.results)print(f"mean ~ {stats.mean}, 95% CI [{stats.ci_low}, {stats.ci_high}]")See Also
Section titled “See Also”- random — underlying PRNG (
random,random_normal) - stochastic — stochastic process generators
- distributions — statistical distributions