# Dynamic and uncertainty

## Contents

Uncertain variables propagate uncertainty samples during dynamic simulation. If an uncertain variable is used in a dynamic simulation, its uncertainty sample is calculated only once, in the initial time period.

Example: The following definitions model population changes over time:

`Variable Population := Normal(30, 2)`
`Variable Birthrate := Normal(1.2, .3)`
`Time := 1 .. 10`
`Variable Pop_by_year := Dynamic(Population, Self[ Time - 1] + Birthrate)`

The uncertainty samples for `Population` and `Birthrate` are each calculated once, at the initial time period. The same samples are then used for each subsequent time period.

## Resampling

If you want to create a new uncertainty sample for each time period (that is, resample for each time period), place the distribution in the last parameter of the Dynamic function. For example, replace `Birthrate` with its definition in `Pop_by_year`:

`Pop_by_year := Dynamic(Population, Self[ Time - 1] + Normal(1.2, .3))`

An alternative way to create a new uncertainty sample for each time period is to make `Birthrate` a dynamic variable:

`Birthrate := Dynamic(Normal(1.2, .3), Normal(1.2, .3))`
`Pop_by_year := Dynamic(Population, Self[ Time - 1] + Birthrate)`

An even cleaner but equivalent way is to define `Birthrate` to use an identical independent distribution (i.i.d.) over Time:

`Birthrate := Normal(1.2, .3, over:Time)`