---
url: /api/kiln/classes/RngState.md
---
[Kiln API](../../index.md) / [kiln](../index.md) / RngState

# Class: RngState

Seeded, serializable PRNG (sfc32 seeded by splitmix32). The only randomness systems may use:
`res.mut(Rng).float()`. Math.random breaks deterministic runs.

## Constructors

### Constructor

```ts
new RngState(seed?): RngState;
```

#### Parameters

| Parameter | Type | Default value |
| ------ | ------ | ------ |
| `seed` | `number` | `0` |

#### Returns

`RngState`

## Properties

### a

```ts
a: number = 0;
```

***

### b

```ts
b: number = 0;
```

***

### c

```ts
c: number = 0;
```

***

### d

```ts
d: number = 0;
```

## Methods

### reseed()

```ts
reseed(seed): void;
```

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `seed` | `number` |

#### Returns

`void`

***

### u32()

```ts
u32(): number;
```

Uniform 32-bit unsigned integer.

#### Returns

`number`

***

### float()

```ts
float(min?, max?): number;
```

Float in \[min, max). Defaults to \[0, 1).

#### Parameters

| Parameter | Type | Default value |
| ------ | ------ | ------ |
| `min` | `number` | `0` |
| `max` | `number` | `1` |

#### Returns

`number`

***

### int()

```ts
int(min, max): number;
```

Integer in \[min, max], inclusive.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `min` | `number` |
| `max` | `number` |

#### Returns

`number`

***

### chance()

```ts
chance(p): boolean;
```

True with probability p.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `p` | `number` |

#### Returns

`boolean`

***

### pick()

```ts
pick<T>(items): T;
```

A random element of a non-empty array.

#### Type Parameters

| Type Parameter |
| ------ |
| `T` |

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `items` | readonly `T`\[] |

#### Returns

`T`

***

### shuffle()

```ts
shuffle<T>(items): T[];
```

Shuffles in place and returns the array.

#### Type Parameters

| Type Parameter |
| ------ |
| `T` |

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `items` | `T`\[] |

#### Returns

`T`\[]

***

### toJSON()

```ts
toJSON(): object;
```

#### Returns

`object`

##### a

```ts
a: number;
```

##### b

```ts
b: number;
```

##### c

```ts
c: number;
```

##### d

```ts
d: number;
```

***

### restore()

```ts
restore(s): void;
```

Restores state saved by toJSON (snapshots).

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `s` | { `a`: `number`; `b`: `number`; `c`: `number`; `d`: `number`; } |
| `s.a` | `number` |
| `s.b` | `number` |
| `s.c` | `number` |
| `s.d` | `number` |

#### Returns

`void`
