2.1.1 : Le header de la bibliothèque
Écrivons le fichier randinit.h :
Comme toujours, on comence par éviter les inclusions multiples :
1 2 |
#ifndef __RANDINIT_H__ #define __RANDINIT_H__ |
Ensuite, on inclue le header qui permet d'accéder aux modes du CPU :
1 |
#include <fenv.h>
|
Ensuite, on inclue les header nécessaires :
1 2 |
#include <stdlib.h> #include <iostream> |
Nous aurons besoin d'une fonction pour initialiser la séquence de nombre pseudo-aléatoire :
1 |
unsigned int initRandom(); |
D'une fonction qui renvoie une valeur pseudo-aléatoire uniforme entre deux autres :
1 2 |
template<typename T> void setRandValue(T & val, const T & inf, const T & sup); |
D'une fonction qui renvoie une valeur pseudo-aléatoire uniforme entre deux autres mais d'une autre manière :
1 2 |
template<typename T> T getRandValue(const T & inf, const T & sup); |
D'une dernière fonction qui fera l'initialisation des valeurs spéciales ou non dans un tablean donné :
1 2 |
template<typename T> void setValueInTable(T * tabValue, size_t nbValue, size_t nbNan, T value); |
Comme certaines de ces fonctions sont template, nous devons include un header supplémentaire (cela permet de le pas surcharger le header principal avec des fonctions implémentées) :
1 |
#include "randinit_impl.h"
|
Enfin, nous fermons la conditions sur l'inclusion multiple :
1 |
#endif
|
Le fichier randinit.h complet :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
/*************************************** Auteur : Pierre Aubert Mail : pierre.aubert@lapp.in2p3.fr Licence : CeCILL-C ****************************************/ #ifndef __RANDINIT_H__ #define __RANDINIT_H__ #include <fenv.h> #include <stdlib.h> #include <iostream> unsigned int initRandom(); template<typename T> void setRandValue(T & val, const T & inf, const T & sup); template<typename T> T getRandValue(const T & inf, const T & sup); template<typename T> void setValueInTable(T * tabValue, size_t nbValue, size_t nbNan, T value); #include "randinit_impl.h" #endif |
Vous pouvez le télécharger ici.