Функция random() с такими же значениями в Linux (во время просмотра)
Когда я попытался сгенерировать случайные значения для различных алгоритмов сортировки, чтобы сравнить их и сравнить результаты, я заметил, что функция random() создает одинаковые значения внутри экземпляра и в том же порядке. Есть ли способ избавиться от этого?
Пример Я попробовал профилировать пузырьковую сортировку и, таким образом, случайно создал 10000 значений, и пузырь отсортировал его, теперь снова, когда я даю 10000 значений, он генерирует тот же набор значений, что и раньше и в том же порядке.
Когда я изменил значение на 1000, первые 1000 значений предыдущего теста были точно такими же, как в этом случае. Я изменил диапазон значений с различными возможностями, такими как только положительные целые и оба положительные, отрицательные целые. По какой причине функция random() генерирует одинаковые значения? И есть ли способ это исправить?
1 ответ
Когда вы используете случайный выбор, вам нужно предоставить начальное значение, иначе вы всегда получите один и тот же результат. Обычное семя для использования - текущее время.
Как видно здесь: Как сгенерировать случайное число в C?
#include <time.h>
#include <stdlib.h>
srand(time(NULL)); // should only be called once
int r = rand(); // returns a pseudo-random integer between 0 and RAND_MAX