На данный вопрос уже ответили:
Допустим, есть цикл, смысл которого в один проход 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, то мы будем иметь несколько разных чисел, которые были сгенерированны в течении нескольких секунд.
Суть вопроса: Как реализовать генерацию случайных чисел не привязанную ко времени?
Парни, прошу прощения за свой кретинизм и плохое чтение мануала.
По совету совету Владимира Мартьянова, я просто переместил srand(time(NULL)) в main.
// Example program
#include <iostream>
#include <stdlib.h> //srand
#include <sys/time.h>
using namespace std;
int random_11()
{
int random_num = rand() % 100;
return random_num;
}
int main()
{
srand(time(NULL));
int ar[20];
int n;
for (int i = 0; i < 20; i++)
{
n = random_11();
ar[i] = n;
cout << ar[i] << '\n';
}
}
Прошу понять, простить и ...
srand() нужно использовать один раз, а не в цикле. Для отвязки от времени передайте аргументом этой функции не время.
Никогда, никогда, НИКОГДА не используйте srand() перед каждым rand().
Ибо rand() сам каждый раз по сути вызывает srand(), инициализируя генератор очередным псевдослучайным значением, а вы мешаете его работе!
Вызвать srand() достаточно один раз, и то только для того, чтоб разные запуски программ работали с разными последовательностями значений.
P.S. Вы же, когда куда-то идете, не начинаете командовать каждой мышце - ты сократись, ты расслабься? А тут от генератора требуете примерно того же - я умней, ты генерирую то, что я говорю. Ну так если умнее - генерируйте сами, не используйте rand()...
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости