Как сделать генератор случайных чисел без повторений ** c++ #include #include using...

0 голосов
152 просмотров

Как сделать генератор случайных чисел без повторений на c++

#include
#include
using namespace std

int main () {
?
}


Информатика (157 баллов) | 152 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

#include
#include
#include
using namespace std;

int main()
{
    array mas;
    iota(mas.begin(), mas.end(), 0);
    random_shuffle(mas.begin(), mas.end());
    for (const auto &i : mas) cout << i << " ";<br>}

(4.2k баллов)
0

Это не генератор случайных чисел, это случайная перетасовка чисел в массиве, со времен C для генерации случайных чисел использовалось время со старта машины либо процесса, точно не помню, но используется функция rand() из библиотеки cstdlib, так что это даже не альтернативное решение, а неправильный ответ по просту.

0

Хочу ещё добавить, что решение крайне не эффективное, что бы увеличить диапазон чисел, необходимо увеличить размер массива, то есть хранить в единый момент времени в памяти коллекцию всех возможных вариантов.

0

Ммм, с каких это пор функция rand() из библиотеки cstdlib является генератором случайных чисел? Начнем с того что она генирирует (псевдо) случайные машинно зависимые числа и тем более выхлоп этой функции не гарантирует что одинаковые числа не выпадут n кол-во раз подряд, ах да и последовательность всегда будет одинаковой. Раз уж и использовать С, то надо брать не rand() , а srand() и ещё тащить за собой ctime.

0

Если брать С++ (что и нужно ТС, читайте задание внимательнее), то там со стандарта С++11 есть свои ГПСЧ. Исходя из задания нигде не сказано о том что мне нужно задавать какой либо диапазон или ещё какие ограничения, тем более опять же по заданию, спрашивается как сделать свой генератор, а не использовать готовый, мой пример это минимальный, можно сказать, псевдослучайный рандомизаторю.

0

И да, я знаю что это не совсем то, но писать истенно свой ГПСЧ уникальных чисел, не то что бы очень сложно, но как минимум хотелось бы адекватных требований, а не то что описал ТС в задании, ну и времени, а мне истенно лень это писать, бесплатно, причем есть ещё много подходов к решению задания, опять же нужны нормальные requirements.