Я рекомендую создавать случайные начальные числа из высокоточных таймеров, таких как std :: chrono :: high_resolution_clock. Тогда они не зависят от пользователя и фактически являются случайными. Всегда создавайте начальное число перед вызовом std :: rand.
#include <chrono>
auto time = std::chrono::high_resolution_clock::now();
auto seed = std::chrono::duration_cast<std::chrono::milliseconds>(time);
std::srand(seed)
Точность в миллисекундах делает семя обычно достаточно уникальным, но если начальное число требуется близко к 1000 раз в секунду, тогда я рекомендую использовать точность в наносекунду или микросекунду, чтобыдействительно случайный.
Лучше всего было бы создать функцию, которая создает случайное начальное число, используя высокоточный таймер и случайное значение, и, наконец, проверяет, что возвращаемое значение находится в диапазоне от 0 до 5 (для 6-гранных кубиков).