J'ai commencé par écrire une fonction qui me génère un octet aléatoire à partir de la fonction rand(), je sais c'est du pseudo aléatoire. Pas grave. Ensuite j'ai généré un nombre réel de cette manière :
- Signe = (+)
- Exposant (puissance de 2) = 0
- Mantisse (valeur comprise dans [0.5;1[) = <généré au hasard>
Les nombres réels sont ceux du coprocesseur arithmétique. Voir la doc Intel :
http://www.intel.com/design/intarch/...entium/fpu.htm
(standard IEEE 754 et 854, réels sur 32, 64 et 80 bits)
Un réel est codé de cette manière : signe*mantisse*2^exposant
signe=1 bit (= +1 ou -1)
mantisse : appartient à [0.5;1[, codé sur un certain nombre de bits dont dépend la précision
exposant : appartient à [EXP_MIN;EXP_MAX], EXP_MIN et EXP_MAX dépendent du format choisi
Partager