/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T E S T   D ' U N E   M E T H O D E   D E   " H A S H - C O D I N G "  :                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xtc/HashCode.01$c' :                                                                                           */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 20120309135818).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#include  <stdio.h>
#include  "INCLUDES.01.I"

#define   ITER      10000
#define   PONDER    7
#define   MODULO    23

#define   INTE(x)                                                                                                                       \
                    ((int)(x))

#define   HASH(x,y,z)                                                                                                                   \
                    REST(INTE(MUL2(MODULO,ABSO((((x)*PONDER+(y))*PONDER+(z))))),MODULO)

extern    double    drand48();
main()
          {
          int       n;
          double    Xf,Yf,Zf;
          int       tableau[MODULO];

          for       (n=0 ; n<MODULO ; n++)
                    {
                    tableau[n]=0;
                    }

          for       (n=1 ; n<=ITER ; n++)
                    {
                    int       code;

                    Xf = drand48();
                    Yf = drand48();
                    Zf = drand48();
                                        /* Creation d'un triplet {Xf,Yf,Zf} aleatoire...                                             */

                    code=HASH(Xf,Yf,Zf);
                    tableau[code]++;
                                        /* Codage et comptage des collisions...                                                      */

                    if        (0)
                              {
                              printf("(%f,%f,%f)=%d\n",Xf,Yf,Zf,code);
                              }
                    else
                              {
                              }
                    }

          for       (n=0 ; n<MODULO ; n++)
                    {
                    printf("collision[%d]=%d\n",n,tableau[n]);
                    }
     }



Copyright © Jean-François Colonna, 2021-2023.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2021-2023.