[BigIntegers] Obtenir un random borné entre deux big integers.
Bonjour,
Voila mon problème, je souhaite générer un BigInteger compris entre 2^1023 et 2^1024.
Etant donné qu'il n'existe pas de méthode dans la classe BigInteger permettant de le faire je passe par deux variables min et max.
Code:
1 2 3
| Random rnd = new Random();
BigInteger Max = new BigInteger(1024, rnd);
BigInteger Min = new BigInteger(1023, rnd); |
Pour obtenir ensuite mon BigInteger borné je calcule la difference puis je dois ensuite generer un aleatoire entre 0 et ma différence puis y ajouter le min.
Or c'est la que le probleme arrive.
Code:
1 2 3 4
| BigInteger Diff = Max.subtract(Min);
int diff = Diff.intValue();
BigInteger var = new BigInteger(diff, rnd);
var.add(Min); |
Mon erreur se situe a la création de var car Diff peut etre negatif et de plus Diff est bien trop grand pour etre exposant.
Avez vous une idée pour résoudre mon problème ?
Sachant que l'objectif final est d'estimer le nombre de nombre premier dans cette borne.
Merci d'avance.