C ++ Generador de números aleatorios sin repetición
Necesito crear una implementación de algoritmo en C ++ para generar números aleatorios para la tabla f.e sin repetir y listar.
Creé un código como ese pero deja de funcionar cuando pongo n = 32769 en el programa de consola deja de funcionar. Cuando pongo el número en el rango 0-32768 funciona. ¿Alguna idea de lo que está mal en este código? Mientras que la compilación no tuve errores / advertencias.
#include <stdio.h>
#include <iostream>
#include <ctime>
int main()
{
clock_t start = clock();
int n;
std::cout << "n:";
std::cin >> n;
bool *used_numbers = new bool[n];
memset(used_numbers, false, sizeof(used_numbers[0]) * n);
int *permutation = new int[n];
srand(unsigned(std::time(NULL)));
int rnd_number;
for (int i = 0; i < n; i++)
{
rnd_number = rand() % n;
if (!used_numbers[rnd_number])
{
permutation[i] = rnd_number;
used_numbers[rnd_number] = true;
}
else
i--;
}
std::cout << "Permutation: \n ";
for (int k = 0; k < n; k++)
{
std::cout << permutation[k] << " ";
}
std::cout << std::endl;
printf("[Debug]: %lu ms\n", clock() - start);
getchar();
system("pause");
return 0;
}