vakho

Modelireba Sak 2 N2 [BETA]

Dec 19th, 2013
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.12 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <math.h>
  4.  
  5. #define SIZE 8
  6. int ArrayRand[SIZE] = {1, 7, 11, 12, 15, 37, 98, 101};
  7.  
  8. int a = 101;
  9. int c = 1;
  10. int m = 128; // 2^7
  11. float wkg_wanacvlebuli(int zi_1)
  12. {
  13.     __int64 zi = zi_1;
  14.     zi = (a*zi + c) & (~(~0 << 7));
  15.     return zi/(float)m;
  16. }
  17.  
  18. float simulaciuriGayofa(int a, int b, int q)
  19. {
  20.     int m = pow(2.0, b);
  21.     m -= q;
  22.  
  23.     float k = a / m;
  24.     float zi = a % m;
  25.  
  26.     zi += (k * q);
  27.  
  28.     while (zi >= m)
  29.         zi -= m;
  30.  
  31.     return zi / (float)m;
  32. }
  33.  
  34. int diskretuli(float num)
  35. {
  36.     if (num > 0 && num <= 0.22)     return 21;
  37.     if (num > 0.22 && num <= 0.39)  return 10;
  38.     if (num > 0.39 && num < 1)      return 18;
  39.     return -1;
  40. }
  41.  
  42. int main()
  43. {
  44.     float ArrayRand2[SIZE] = {0};
  45.     for (int i = 0; i < SIZE; i++)
  46.     {
  47.         ArrayRand2[i] = wkg_wanacvlebuli(ArrayRand[i]);
  48.         printf("ArrayRand2[%d] = \t%f\n", i, ArrayRand2[i]);
  49.     }
  50.  
  51.     printf("\n");
  52.     for (int i = 0; i < 6; i++)
  53.         printf("%d =\t%d\n", (i+1), diskretuli(ArrayRand2[i]));
  54.  
  55.     printf("\n");
  56.     for (int i = 0; i < SIZE; i++)
  57.         printf("simulac(87,4,1)  = %f\n", simulaciuriGayofa(ArrayRand[i], 4, 1));
  58.  
  59.     system("PAUSE");
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment