Вот как я недавно решил похожую проблему.Я помещаю это в соответствующий файл .cc:
static std::random_device rd;
static std::mt19937 gen(rd());
Внутри заголовка, который определяет перечисление:
enum Direction
{
N,
E,
S,
W
};
static std::vector<Direction> ALL_DIRECTIONS({Direction::N, Direction::E, Direction::S, Direction::W});
И для генерации случайного направления:
Direction randDir() {
std::uniform_int_distribution<size_t> dis(0, ALL_DIRECTIONS.size() - 1);
Direction randomDirection = ALL_DIRECTIONS[dis(gen)];
return randomDirection;
}
Не забудьте
#include <random>