se usi c++Originariamente inviato da Eyescream
Quale potrebbe essere il metodo più veloce per generare tutti i numeri da 1 a x ma in ordine casuale?
random_shuffle è una funzione delle STL e ha complessità di tempo O(n).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; }

Rispondi quotando