kamilosxd678

Generator Lab2 RPSM

Mar 19th, 2013
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.55 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. ////////////Zad1. Wzór 2.2
  4. //n = 100 000; 32 bitowe; x0 = 15; a = 69069; c = 1; M = 2^31 - 1
  5. //10 przedzialow
  6. ////////////Zad2. Wzór 2.6
  7. //
  8. using namespace std;
  9. unsigned int generatorPierwszy(unsigned int x){
  10.     int a = 69069;
  11.     int c = 1;
  12.     int M = 1<<31;
  13.     M -= 1;
  14.  
  15.     return (a*x+c)%M;
  16. }
  17. int main(){
  18.     /*unsigned int x = 15;
  19.     unsigned int wyniki[100000];
  20.     unsigned int licznosci[10]={0,0,0,0,0,0,0,0,0,0};
  21.     int iterator = 0;
  22.     double przedzial = ((1<<31)-1)/10.0;
  23.     int costam;
  24.     for(int i = 0; i < 100000; i++){
  25.         x = generatorPierwszy(x);
  26.         wyniki[iterator] = x;
  27.         iterator++;
  28.         costam = floor(x/przedzial);
  29.         licznosci[costam]++;
  30.     }
  31.     unsigned int suma = 0;
  32.     for(int i = 0; i < 10; i++){
  33.         cout << licznosci[i] << endl;
  34.         suma += licznosci[i];
  35.     }
  36.     cout << "Suma: " << suma << endl;
  37.     //cout << generatorPierwszy() << endl;*/
  38.     unsigned int liczba = 0xDC000000;
  39.     int p = 3;
  40.     int q = 7;
  41.     int bity[2]={0};
  42.     int wyjsciowy;
  43.     int licznosci[10] = {0};
  44.     licznosci[0]-=1;
  45.     int index = 0;
  46.     for(int i = 0; i <= 3200000; i++){
  47.         if(liczba & (1<<(32-p)))
  48.             bity[0] = 1;
  49.         else
  50.             bity[0] = 0;
  51.  
  52.         if(liczba & (1<<(32-q)))
  53.             bity[1] = 1;
  54.         else
  55.             bity[1] = 0;
  56.  
  57.         wyjsciowy = (bity[0]+bity[1])%2;
  58.  
  59.         liczba = liczba>>1;
  60.         liczba |= wyjsciowy<<31;
  61.         if(i%32 == 0){
  62.             index = floor(liczba/((((unsigned int)0)-1)/10.0));
  63.             licznosci[index]++;
  64.         }
  65.     }
  66.     int suma = 0;
  67.     for(int i = 0; i < 10; i++){
  68.         cout << licznosci[i] << endl;
  69.         suma += licznosci[i];
  70.     }
  71.     cout << "suma: " << suma << endl;
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment