summary refs log tree commit diff stats
path: root/Source/Random.cpp
blob: aee4d1a8d6eaa2c18ba2e58146410e81bca83069 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "pch.h"
#include "Random.h"

uint32_t Random::s_seed = static_cast<int>(time(nullptr)); // Seed from the time in milliseconds

void Random::SetSeed(int seed) {
    s_seed = seed;
}

// Returns a random integer in [min, max]
int Random::RandInt(int min, int max) {
    s_seed = (214013 * s_seed + 2531011); // Implicit unsigned integer overflow
    int32_t maskedSeed = ((s_seed >> 16) & 0x7fff); // Only use bits 16-30
    return (maskedSeed % (max - min + 1)) + min;
}