[ Tcllib Home | Main Table Of Contents | Table Of Contents | Keyword Index | Categories | Modules | Applications ]

simulation::montecarlo(n) 0.1 tcllib "Tcl Simulation Tools"


simulation::montecarlo - Monte Carlo simulations

Table Of Contents



The technique of Monte Carlo simulations is basically simple:

You can think of a model of a network of computers, an ecosystem of some kind or in fact anything that can be quantitatively described and has some stochastic element in it.

The package simulation::montecarlo offers a basic framework for such a modelling technique:

# MC experiments:
# Determine the mean and median of a set of points and compare them
::simulation::montecarlo::singleExperiment -init {
    package require math::statistics
    set prng [::simulation::random::prng_Normal 0.0 1.0]
} -loop {
    set numbers {}
    for { set i 0 } { $i < [getOption samples] } { incr i } {
        lappend numbers [$prng]
    set mean   [::math::statistics::mean $numbers]
    set median [::math::statistics::median $numbers] ;# ? Exists?
    setTrialResult [list $mean $median]
} -final {
    set result [getTrialResults]
    set means   {}
    set medians {}
    foreach r $result {
        foreach {m M} $r break
        lappend means   $m
        lappend medians $M
    puts [getOption reportfile] "Correlation: [::math::statistics::corr $means $medians]"
} -trials 100 -samples 10 -verbose 1 -columns {Mean Median}

This example attemps to find out how well the median value and the mean value of a random set of numbers correlate. Sometimes a median value is a more robust characteristic than a mean value - especially if you have a statistical distribution with "fat" tails.


The package defines the following auxiliary procedures:

::simulation::montecarlo::getOption keyword

Get the value of an option given as part of the singeExperiment command.

string keyword

Given keyword (without leading minus)

::simulation::montecarlo::hasOption keyword

Returns 1 if the option is available, 0 if not.

string keyword

Given keyword (without leading minus)

::simulation::montecarlo::setOption keyword value

Set the value of the given option.

string keyword

Given keyword (without leading minus)

string value

(New) value for the option

::simulation::montecarlo::setTrialResult values

Store the results of the trial for later analysis

list values

List of values to be stored

::simulation::montecarlo::setExpResult values

Set the results of the entire experiment (typically used in the final phase).

list values

List of values to be stored


Get the results of all individual trials for analysis (typically used in the final phase or after completion of the command).


Get the results of the entire experiment (typically used in the final phase or even after completion of the singleExperiment command).

::simulation::montecarlo::transposeData values

Interchange columns and rows of a list of lists and return the result.

list values

List of lists of values

There are two main procedures: integral2D and singleExperiment.

::simulation::montecarlo::integral2D ...

Integrate a function over a two-dimensional region using a Monte Carlo approach.

Arguments PM

::simulation::montecarlo::singleExperiment args

Iterate code over a number of trials and store the results. The iteration is gouverned by parameters given via a list of keyword-value pairs.

int n

List of keyword-value pairs, all of which are available during the execution via the getOption command.

The singleExperiment command predefines the following options:

Any other options can be used via the getOption procedure in the body.


The procedure singleExperiment works by constructing a temporary procedure that does the actual work. It loops for the given number of trials.

As it constructs a temporary procedure, local variables defined at the start continue to exist in the loop.


math, montecarlo simulation, stochastic modelling