Reference

Random Numbers

typedef struct rng *RNG

Defines a random number generator.


void rng_seed(RNG rng, unsigned long seed)

Seed the generator.

Parameters:
  • rng – The random number generator to seed.

  • seed – The seed value.


unsigned long rng_next(RNG rng)

Get the next unsigned long random number.

Parameters:

rng – The random number generator.


RNG rng_std_create(MEM_SCOPE mem)

Create a standard system random number generator.

Remark

This generator returns 31bit numbers.

Parameters:

mem – A memory scope to own the memory.

Returns:

A standard system random number generator.


RNG rng_xor_create(MEM_SCOPE mem)

Create an XOR random number generator.

Remark

This generator returns 64bit numbers.

Parameters:

mem – A memory scope to own the memory.

Returns:

An XOR random number generator.


Hashing

unsigned long hash_simple(const void *key, unsigned int len, unsigned long seed)

Hash an arbitrary block of data using a simple hash.

Remark

The seed is used to provide additional security.

Parameters:
  • key – The key for the hash.

  • len – The length of the data in bytes.

  • seed – A seed for the hash.

Returns:

A hash value.