Factorio.com|Forums|Wiki|Mod Portal|API Docs Prototype|Runtime|Auxiliary

# Factorio Runtime Docs Version 2.0.7

## Class LuaRandomGenerator

A deterministic random generator independent from the core games random generator that can be seeded and re-seeded at will. This random generator can be saved and loaded and will maintain its state.

Note this is entirely different from calling math.random() and you should be sure you actually want to use this over calling `math.random()`. If you aren't sure if you need to use this over calling `math.random()` then you probably don't need to use this.

## Example

    -- Create a generator and use it to print a random number.
    storage.generator = game.create_random_generator()
    game.player.print(storage.generator())

## Members

re_seed(seed) |  | Re-seeds the random generator with the given value. [...]
Re-seeds the random generator with the given value. [...]
valid | :: R boolean | Is this object valid? [...]
Is this object valid? [...]
object_name | :: R string | The class name of this object. [...]
The class name of this object. [...]
() (call) | → double | Generates a random number. [...]
Generates a random number. [...]

## Methods

### re_seed(seed)

Re-seeds the random generator with the given value.

Seeds that are close together will produce similar results. Seeds from 0 to 341 will produce the same results.

#### Parameters

seed | :: uint |

## Attributes

### valid :: Read boolean

Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.

### object_name :: Read string

The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.

## Operators

### () (call) → double

Generates a random number. If no parameters are given a number in the `[0, 1)` range is returned. If a single parameter is given a floored number in the `[1, N]` range is returned. If 2 parameters are given a floored number in the `[N1, N2]` range is returned.

#### Parameters

lower | :: int? | Inclusive lower bound on the result
Inclusive lower bound on the result
upper | :: int? | Inclusive upper bound on the result
Inclusive upper bound on the result