50 lines
1.3 KiB
C

/**
* Copyright (c) 2021 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
#pragma once
#include <dawn/dawn.h>
#include "math.h"
/**
* Generates a random int32_t.
* @returns A random int32_t number.
*/
#define randInt32() ((int32_t)rand())
/**
* Generates a random floating point number.
* @returns A random floating point number.
*/
#define randFloat() (((float)randInt32()) * MATH_PI)
/**
* Generates a random uint32_t
* @returns A random uint32_t number.
*/
#define randUint32() (uint32_t)randInt32()
/**
* Generates a random uint8_t
* @returns A random uint8_t number.
*/
#define randUint8() (uint8_t)randInt32()
////////////////////////////////////////////////////////////////////////////////
/**
* Clamps a random number generation.
* @param n Number that has been generated from the random.
* @param min Minimum value to generate from. (Inclusive)
* @param max Maximum value to generate to. (Exclusive)
* @return Random number between min and max.
*/
#define randRange(n, min, max) (mathMod(n, max - min) + min)
#define randInt32Range(min, max) randRange(randInt32(), min, max)
#define randFloatRange(min, max) (fmod(randFloat(), max- min) + min)
#define randUint32Range(min, max) randRange(randUint32(), min, max)
#define randUint8Range(min, max) randRange(randUint8(), min, max)