GBDK 2020 Docs 4.4.0 API Documentation for GBDK 2020

Macros | Functions | Variables
rand.h File Reference
`#include <types.h>`
`#include <stdint.h>`

Go to the source code of this file.

## Macros
#define | RAND_MAX 255
#define | RANDW_MAX 65535

## Functions
void | initrand (uint16_t seed) OLDCALL
uint8_t | rand (void) OLDCALL PRESERVES_REGS(b
uint16_t | randw (void) OLDCALL PRESERVES_REGS(b
void | initarand (uint16_t seed) OLDCALL
uint8_t | arand (void) OLDCALL PRESERVES_REGS(b

## Variables
uint16_t | __rand_seed
uint8_t | c

## Detailed Description

Random generator using the linear congruential method

Author
  Luc Van den Borre

## Macro Definition Documentation

## ◆ RAND_MAX

#define RAND_MAX 255

## ◆ RANDW_MAX

#define RANDW_MAX 65535

## Function Documentation

## ◆ initrand()

void initrand | ( | uint16_t | seed | ) |

Initalise the pseudo-random number generator.

Parameters

  seed | The value for initializing the random number generator.

The seed should be different each time, otherwise the same pseudo-random sequence will be generated.

One way to do this is sampling (DIV_REG) up to 2 times (high byte of seed value then the low byte) at variable, non-deterministic points in time (such as when the player presses buttons on the title screen or in a menu).

It only needs to be called once to be initialized.

See also
  rand(), randw()

## ◆ rand()

uint8_t rand | ( | void |  | ) |

Returns a random byte (8 bit) value.

initrand() should be used to initialize the random number generator before using rand()

## ◆ randw()

uint16_t randw | ( | void |  | ) |

Returns a random word (16 bit) value.

initrand() should be used to initialize the random number generator before using rand()

## ◆ initarand()

void initarand | ( | uint16_t | seed | ) |

Random generator using the linear lagged additive method

Parameters

  seed | The value for initializing the random number generator.

Note: initarand() calls initrand() with the same seed value, and uses rand() to initialize the random generator.

See also
  initrand() for suggestions about seed values, arand()

## ◆ arand()

uint8_t arand | ( | void |  | ) |

Returns a random number generated with the linear lagged additive method.

initarand() should be used to initialize the random number generator before using arand()

## Variable Documentation

## ◆ __rand_seed

uint16_t __rand_seed
| extern

The random number seed is stored in __rand_seed and can be saved and restored if needed.

// Save
some_uint16 = __rand_seed;
...
// Restore
__rand_seed = some_uint16;
__rand_seed
uint16_t __rand_seed

## ◆ c

uint8_t c