Advertisement
Markort

AcadEx: Heuristic Approach to Birthday Problem - ITA

Mar 28th, 2013 (edited)
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.88 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <stdlib.h>
  4. #define EXPMAX 1000000
  5. #define NMAX 365
  6. #define NMIN 2
  7.  
  8. int fillDate(int*,int);
  9. int getInt(char*,int,int);
  10.  
  11. int main () {
  12.   srand48(time(0));
  13.   int N, date[NMAX], i, freq, EXP;
  14.   long double prob;
  15.   N = getInt("N persone",NMIN,NMAX);
  16.   EXP = getInt("N esperimenti",1,EXPMAX);
  17.   freq=0;
  18.   for (i=0;i<EXP;i++) {
  19.     freq+= fillDate(date,N);
  20.   }
  21.   prob= freq*100./EXP;
  22.   printf("Percentuale di probabilità: %Lf\n",prob);
  23.   return 0;
  24. }
  25.  
  26. int getInt(char*mess,int min,int max) {
  27.   int out;
  28.   do {
  29.     printf("%s [%d,%d]: ",mess,min,max);
  30.     scanf("%d",&out);
  31.   }while(out<min||out>max);
  32.   return out;
  33. }
  34.  
  35. int fillDate(int*array,int len) {
  36.   int i, j;
  37.   for (i=0;i<len;i++) {
  38.     *(array+i) = lrand48()%(NMAX-1);
  39.     for (j=0;j<i;j++) {
  40.       if (*(array+j)==*(array+i)) return 1;
  41.     }
  42.   }
  43.   return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement