Permutacja losowa
Kod był wyświetlany 7032 razy.
    /*
  Name: Permutacja losowa 
  Copyright: GPL GNU
  Date: 27-10-2007 18:16:33
  Description: 
  Permutacja losowa
Załóżmy, ze mamy tablice p złożona z n liczb (ponumerowanych od 0 do n - 1).
Aby wygenerować losowa permutacje tego zbioru należy wykonać n - 2 kroków:
1. losujemy liczbę k 2 {0, . . . , n - 1} i przestawiamy elementy p[k] i p[n - 1].
2. losujemy liczbę k 2 {0, . . . , n - 2} i przestawiamy elementy p[k] i p[n - 2].
(n - 2). losujemy liczbę k 2 {0, 1} i zamieniamy elementy p[k] i p[1].

Algorytm: Permutacja losowa
Dane: n - długość permutacji.
Wynik: tablica p zawierająca liczby 0, . . . , n - 1 w przypadkowej kolejności
Begin
Randomize
for k = 0 to n - 1 do p[k] = k
Begin
for k = n downto 2 { l = Random (k)
Zamien (p[l], p[k - 1])
} End
Write(p)
End
*/
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
  int n,k,l;
  int *p;
  srand(time(NULL));
  
  cout << "\n\n\tPodaj liczbe n elementow w tablicy: ";
  cin >> n;
  
  p = new int[n];
   cout<<"\n\n\tTablica z liczbami:  ";
  for (k=0; k<=n-1; k++)
  {
    p[k]=k;
    cout << p[k] << "  ";
  }
  cout << endl;
 
  for (k=n; k>=2; k--)
  {
    l = rand() % k;
    swap(p[l], p[k-1]);
  }
  
  cout<<"\n\n\tLosowa permutacja: ";
  for (k=0; k<n; k++)
     cout << p[k] << " ";
  
  cin.ignore();  
  getchar();
  return 0;
  
}
    
Pobierz plik tekstowy
Administrator WJL
PHP&SQL coded by NOVA-IT