Допустим, есть цикл, смысл которого в один проход 20 раз вызвать функцию srand
. Поскольку srand для генерации чисел использует текущее время, то выполняя цикл быстрее,чем в одну секунду, я на выходе получаю 20 одинаковых чисел. Пример кода:
// Example program #include <iostream> #include <stdlib.h> //srand #include <time.h> using namespace std; int random_11() { srand(time(NULL)); //Вызываем функцию рандома. Описание функции по ссылке: http://www.cplusplus.com/reference/cstdlib/rand/ int random_num = rand() % 100; // Генерируем число в пределах 100 return random_num; } int main() { int ar[20]; int n; for (int i = 0; i < 20; i++) { n = random_11(); // Вызываем функцию для генерации случайного числа ar[i] = n; cout << ar[i] << '\n'; } }
На выходе, мы получим 20 одинаковых значений, которые были сгенерированны в данную секунду. Если изменить значение 20 на, скажем 200,000. То мы будем иметь несколько разных чисел, которые были сгенерированны за несколько секунд.
Суть вопроса: Как реализовать генерацию случайных чисел не привязанную ко времени?