#include <iostream> #include <numeric> #include <array> using namespace std;
int main() { array<int, 10> mas; iota(mas.begin(), mas.end(), 0); random_shuffle(mas.begin(), mas.end()); for (const auto &i : mas) cout << i << " "; }
1 votes Thanks 0
clinteastwood2
Ммм, с каких это пор функция rand() из библиотеки cstdlib является генератором случайных чисел? Начнем с того что она генирирует (псевдо) случайные машинно зависимые числа и тем более выхлоп этой функции не гарантирует что одинаковые числа не выпадут n кол-во раз подряд, ах да и последовательность всегда будет одинаковой. Раз уж и использовать С, то надо брать не rand() , а srand() и ещё тащить за собой ctime.
clinteastwood2
Если брать С++ (что и нужно ТС, читайте задание внимательнее), то там со стандарта С++11 есть свои ГПСЧ. Исходя из задания нигде не сказано о том что мне нужно задавать какой либо диапазон или ещё какие ограничения, тем более опять же по заданию, спрашивается как сделать свой генератор, а не использовать готовый, мой пример это минимальный, можно сказать, псевдослучайный рандомизаторю.
clinteastwood2
И да, я знаю что это не совсем то, но писать истенно свой ГПСЧ уникальных чисел, не то что бы очень сложно, но как минимум хотелось бы адекватных требований, а не то что описал ТС в задании, ну и времени, а мне истенно лень это писать, бесплатно, причем есть ещё много подходов к решению задания, опять же нужны нормальные requirements.
Answers & Comments
Verified answer
#include <iostream>#include <numeric>
#include <array>
using namespace std;
int main()
{
array<int, 10> mas;
iota(mas.begin(), mas.end(), 0);
random_shuffle(mas.begin(), mas.end());
for (const auto &i : mas) cout << i << " ";
}