Bonjour,
j'envisage de créer une bibliothéque de générateurs de nombres pseudo-aléatoires. Certains ne posent pas de problèmes comme par exemple le générateur linéaire congruentiel. Mais pour les générateurs de suites de bits, comme le générateur RSA ou celui basé sur le problème du logarithme discret, je me demande comment faire pour génerer un nombre compris entre deux valeurs ?
Par exemple:
si je veux génerer un entier entre 0 et x:
si x est une puissance de deux, pas de problèmes, il suffit de génerer n bits ou x=2^n
mais si x n'est pas une puissance de 2 ? Je fais comment ?
Comme on a 2^n < x < 2^(n+1) , si je ne genere que n bits, je n'aurais pas certaines valeurs, si je genere n+1 bits certaines valeurs dépasseront x. Dois-je alors appliquer un modulo x, au risque d'augmenter les fréquences d'apparitions des premiers nombres ? Y'a-t'il une solution plus élégante ?
Merci d'avance pour vos réponses
Partager