Originariamente inviato da Eyescream
Quale potrebbe essere il metodo più veloce per generare tutti i numeri da 1 a x ma in ordine casuale?
se usi c++

codice:
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <ctime>

using namespace std;

const int MAX_NUM = 90;

struct RandGen {
  int operator () (int n) { return int(n * (rand()/(RAND_MAX+1.0))); }
};

int main()
{  
  int num[MAX_NUM], i, j;
  
  srand(time(NULL));

  for (i = 0; i < MAX_NUM; i++)
    num[i] = i+1;
  
  RandGen myrand;
  random_shuffle(num, num+MAX_NUM, myrand);
  
  for (i = 0; i < MAX_NUM; i += 5)
  {
    for (j = 0; j < 5; j++)
      cout << setw(3) << num[i+j] << ' ';

    cout << endl;
  }

  return 0;
}
random_shuffle è una funzione delle STL e ha complessità di tempo O(n).