# Uncertainty

When modelling real world systems, sources of randomness or uncertainty are often needed to properly describe how a system functions. This randomness needs to be repeatable, in order to
properly develop and test models. Sysdea provides a set of seeded random number functions which solve this use case.

### Seed

The seed is a combination of the model seed (initialised to the models unique identifier) and the element seed (initialised to its internal identifier, in future will be configurable also). The model seed should be reasonably long, to provide a decent initial pool of entropy.

### Continuous Functions

```
rand_uniform(min=0, max=1)
```

Returns a number in the range min <= n < max.

```
rand_gaussian(mean=0, standard_deviation=1)
```

Returns numbers on the normal or gaussian distribution, with mean and standard deviation as given.

```
rand_student(dof=1)
```

Returns numbers from the Students T-Distribution.

```
rand_exp(lambda=1)
```

Returns numbers from the Exponential Distribution.

```
rand_pareto(xm=1, alpha=1.16)
```

Returns numbers from the Pareto Distribution.

### Discrete Functions

```
rand_bernoulli(p=0.5)
```

Runs a Bernoulli Trial with given probability. Returns `1`

with probability `p`

, otherwise `0`

.

```
rand_discrete(min=0, max=1)
```

Returns an integer `n`

where `min <= n <= max`

.

```
rand_poisson(mean=1)
```

Returns numbers from the Poisson Distribution. Good for simulating arrival rates with expected `mean`

arrivals per time period.

```
rand_binomial(n=1, p=0.5)
```

Returns numbers from the Binomial Distribution for given `n`

and `p`

.

```
rand_poisson_binomial(...pv):
takes any number of arguments, as a list of probabilities
```

Returns numbers from the Poisson-Binomial Distribution with given probabilities.