Генерация полностью рандомных чисел в 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 << ' ';
Просто можно не подключать дополнительный файл.