Guest User

Untitled

a guest
Jul 20th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.24 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. /* Period parameters */  
  5. #define N 624
  6. #define M 397
  7. #define MATRIX_A 0x9908b0dfUL   /* constant vector a */
  8. #define UPPER_MASK 0x80000000UL /* most significant w-r bits */
  9. #define LOWER_MASK 0x7fffffffUL /* least significant r bits */
  10.  
  11. static unsigned long mt[N]; /* the array for the state vector  */
  12. static int mti=N+1; /* mti==N+1 means mt[N] is not initialized */
  13.  
  14. /* initializes mt[N] with a seed */
  15. void init_genrand(unsigned long s)
  16. {
  17.     mt[0]= s & 0xffffffffUL;
  18.     for (mti=1; mti<N; mti++) {
  19.         mt[mti] =
  20.         (1812433253UL * (mt[mti-1] ^ (mt[mti-1] >> 30)) + mti);
  21.         /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */
  22.         /* In the previous versions, MSBs of the seed affect   */
  23.         /* only MSBs of the array mt[].                        */
  24.         /* 2002/01/09 modified by Makoto Matsumoto             */
  25.         mt[mti] &= 0xffffffffUL;
  26.         /* for >32 bit machines */
  27.     }
  28. }
  29.  
  30. /* initialize by an array with array-length */
  31. /* init_key is the array for initializing keys */
  32. /* key_length is its length */
  33. /* slight change for C++, 2004/2/26 */
  34. void init_by_array(unsigned long init_key[], int key_length)
  35. {
  36.     int i, j, k;
  37.     init_genrand(19650218UL);
  38.     i=1; j=0;
  39.     k = (N>key_length ? N : key_length);
  40.     for (; k; k--) {
  41.         mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1664525UL))
  42.           + init_key[j] + j; /* non linear */
  43.         mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */
  44.         i++; j++;
  45.         if (i>=N) { mt[0] = mt[N-1]; i=1; }
  46.         if (j>=key_length) j=0;
  47.     }
  48.     for (k=N-1; k; k--) {
  49.         mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1566083941UL))
  50.           - i; /* non linear */
  51.         mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */
  52.         i++;
  53.         if (i>=N) { mt[0] = mt[N-1]; i=1; }
  54.     }
  55.  
  56.     mt[0] = 0x80000000UL; /* MSB is 1; assuring non-zero initial array */
  57. }
  58.  
  59. /* generates a random number on [0,0xffffffff]-interval */
  60. unsigned long genrand_int32(void)
  61. {
  62.     unsigned long y;
  63.     static unsigned long mag01[2]={0x0UL, MATRIX_A};
  64.     /* mag01[x] = x * MATRIX_A  for x=0,1 */
  65.  
  66.     if (mti >= N) { /* generate N words at one time */
  67.         int kk;
  68.  
  69.         if (mti == N+1)   /* if init_genrand() has not been called, */
  70.             init_genrand(5489UL); /* a default initial seed is used */
  71.  
  72.         for (kk=0;kk<N-M;kk++) {
  73.             y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
  74.             mt[kk] = mt[kk+M] ^ (y >> 1) ^ mag01[y & 0x1UL];
  75.         }
  76.         for (;kk<N-1;kk++) {
  77.             y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
  78.             mt[kk] = mt[kk+(M-N)] ^ (y >> 1) ^ mag01[y & 0x1UL];
  79.         }
  80.         y = (mt[N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK);
  81.         mt[N-1] = mt[M-1] ^ (y >> 1) ^ mag01[y & 0x1UL];
  82.  
  83.         mti = 0;
  84.     }
  85.  
  86.     y = mt[mti++];
  87.  
  88.     /* Tempering */
  89.     y ^= (y >> 11);
  90.     y ^= (y << 7) & 0x9d2c5680UL;
  91.     y ^= (y << 15) & 0xefc60000UL;
  92.     y ^= (y >> 18);
  93.  
  94.     return y;
  95. }
  96.  
  97. int main(void)
  98. {
  99.     unsigned long init[4]={0x123, 0x234, 0x345, 0x456}, length=4;
  100.     init_by_array(init, length);
  101.    
  102.  
  103.  
  104. float antalganger=0,T,i=0,s1=0,s2=0,s3=0,s4=0,s5=0,s6=0;
  105. char E;
  106. while (i!=1)
  107. {
  108.     T=genrand_int32()%25+97;
  109.     E=T;
  110.     /*printf("%c",E);*/
  111.  
  112.     if(E==102)
  113.     {
  114.         T=genrand_int32()%25+97;
  115.         E=T;
  116.         antalganger++;
  117.         s1++;
  118.         if(E==108)
  119.         {
  120.             T=genrand_int32()%25+97;
  121.             E=T;
  122.             antalganger++;
  123.             s2++;
  124.             if(E==117)
  125.             {
  126.                 T=genrand_int32()%25+97;
  127.                 E=T;
  128.                 antalganger++;
  129.                 s3++;
  130.                 if(E==102)
  131.                 {
  132.                     T=genrand_int32()%25+97;
  133.                     E=T;
  134.                     antalganger++;
  135.                     s4++;
  136.                     if(E==102)
  137.                     {
  138.                         T=genrand_int32()%25+97;
  139.                         E=T;
  140.                         antalganger++;
  141.                         s5++;
  142.                         if(E==101)
  143.                         {
  144.                             T=genrand_int32()%25+97;
  145.                             E=T;
  146.                             antalganger++;
  147.                             s6++;
  148.                             printf("%c",E);
  149.                             if(E==116)
  150.                             {
  151.                                 T=genrand_int32()%25+97;
  152.                                 E=T;
  153.                                 antalganger++;
  154.                                 goto utanfor;
  155.  
  156.                             }
  157.                         }
  158.                     }
  159.                 }
  160.             }
  161.         }
  162.     }
  163.     antalganger++;
  164. }
  165. utanfor:
  166. printf("Grattis! fluffet skrevs efter %d ganger",antalganger);
  167. printf("\n Steg 1-6 uppnaddes %d , %d , %d , %d , %d respektive %d ganger",s1,s2,s3,s4,s5,s6);
  168.  
  169.     return 0;
  170. }
Add Comment
Please, Sign In to add comment