I have created a function within my utility namespace to generate a random number to prevent duplicate pieces of code. Unfortunately it not as random as it re initialize the variables each time it's called, so when i loop something it gets the same output from time(0) and so the same value.
As my experience is limited i don't know how to fix it, as a singleton can't being applied due to it not being a class.
#ifndef UTILS_INT_HEADER_INCLUDED
#define UTILS_INT_HEADER_INCLUDED
#include <iostream>
#include <random>
#include <ctime>
namespace utils
{
    static int random(int min, int max, int seed) {
        std::default_random_engine generator;
        generator.seed(seed);
        std::uniform_int_distribution<int> dist(min, max);
        return dist(generator);
    }
    static int random(int max) {
        return random(0, max, time(0));
    }
    static int random(int min, int max) {
        return random(min, max, time(0));
    }
}
#endif
