Генерация полностью рандомных чисел в C++

В с++ хочу сгенерировать рандомное число, но число, которое генерируется с помощью функции rand() с каждым запуском не меняется. Так вот вопрос, как сгенерировать поистине рандомное число, которое с каждым запуском программы будет регенерироваться?


Ответы (1 шт):

Автор решения: AR Hovsepyan

Учитывая, что выделяя динамическую память операционная система обычно не повторяется с адресом: то можно значение этого адреса использовать как зерно распределения, как альтернативный способ:

class Seed {
    union {
        const char* p;
        const unsigned n;
    };
public:
    Seed() : p(new char) {}
    operator unsigned() const
    {
        return n;
    }
    ~Seed() { delete p; }
};

И пример применения:

srand(Seed());
for (int i = 0; i < 10; ++i)
    cout << rand() % 100 << ' ';

Просто можно не подключать дополнительный файл.

→ Ссылка