Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English version of the page.

# rng

Control random number generation

## Syntax

``rng(seed)``
``rng('shuffle')``
``rng(seed, generator)``
``````rng('shuffle', generator)``````
``rng('default')``
``scurr = rng``
``rng(s)``
``sprev = rng(...)``

## Description

### Note

To use the `rng` function instead of `rand` or `randn` with the `'seed'`, `'state'`, or `'twister'` inputs, see the documentation on Replace Discouraged Syntaxes of rand and randn.

````rng(seed)` seeds the random number generator using the nonnegative integer `seed` so that `rand`, `randi`, and `randn` produce a predictable sequence of numbers.```
````rng('shuffle')` seeds the random number generator based on the current time. Thus, `rand`, `randi`, and `randn` produce a different sequence of numbers after each time you call `rng`.```
````rng(seed, generator)` and ```rng('shuffle', generator)``` additionally specify the type of the random number generator used by `rand`, `randi`, and `randn`. The `generator` input is one of: `'twister'`: Mersenne Twister`'simdTwister'`: SIMD-oriented Fast Mersenne Twister`'combRecursive'`: Combined Multiple Recursive`'philox'`: Philox 4x32 generator with 10 rounds`'threefry'`: Threefry 4x64 generator with 20 rounds`'multFibonacci'`: Multiplicative Lagged Fibonacci`'v5uniform'`: Legacy MATLAB® 5.0 uniform generator`'v5normal'`: Legacy MATLAB 5.0 normal generator`'v4'`: Legacy MATLAB 4.0 generator```
````rng('default')` puts the settings of the random number generator used by `rand`, `randi`, and `randn` to their default values. This way, the same random numbers are produced as if you restarted MATLAB. The default settings are the Mersenne Twister with seed 0.```
````scurr = rng` returns the current settings of the random number generator used by `rand`, `randi`, and `randn`. The settings are returned in a structure `scurr` with fields '`Type`', '`Seed`', and '`State`'. ```
````rng(s)` restores the settings of the random number generator used by `rand`, `randi`, and `randn` back to the values captured previously with a command such as `s = rng`.```
````sprev = rng(...)` returns the previous settings of the random number generator used by `rand`, `randi`, and `randn` before changing the settings.```

## Examples

### Example 1 — Retrieve and Restore Generator Settings

Save the current generator settings in `s`:

`s = rng;`

Call `rand` to generate a vector of random values:

```x = rand(1,5) x = 0.8147 0.9058 0.1270 0.9134 0.6324```

Restore the original generator settings by calling `rng`. Generate a new set of random values and verify that `x` and `y` are equal:

```rng(s); y = rand(1,5) y = 0.8147 0.9058 0.1270 0.9134 0.6324```

### Example 2 — Restore Settings for Legacy Generator

Use the legacy generator.

```sprev = rng(0,'v5uniform') sprev = Type: 'twister' Seed: 0 State: [625x1 uint32] x = rand x = 0.9501```

Restore the previous settings by calling `rng`:

`rng(sprev)`