Bonjour,

Je sais pas si vous avez déjà rencontré ce problème mais je génère de grands nombres premiers aléatoires grâce à la classe BigInteger.

Cependant, le premier appel (que ce soit un grand ou un petit nombre) a généré prend énormément de temps. En l’occurrence ici 5 sec pour un nombre aléatoire de 2 bit!

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
BigInteger m;
long start;
long end;
long time=0;
 
SecureRandom rand = SecureRandom.getInstance("SHA1PRNG");
start = System.currentTimeMillis();
m = new BigInteger(1, rand);
end = System.currentTimeMillis();
System.out.println("random number generation time was " + (end - start) + " ms.");
 
for(int i = 1; i <= 10; i++){
	m = null;
 
	start = System.currentTimeMillis();
 
	m = new BigInteger(512, Integer.MAX_VALUE ,rand);
 
	end = System.currentTimeMillis();
 
	time += (end-start);
	System.out.println("random number " + i + " generation time was " + (end - start)+ " ms.");
 
	}
System.out.println("random number generation time was " + time + " ms. Average = " + (time/10) + " ms");
Voici les résultats

random number generation time was 5003 ms.
random number 1 generation time was 118 ms.
random number 2 generation time was 88 ms.
random number 3 generation time was 145 ms.
random number 4 generation time was 93 ms.
random number 5 generation time was 179 ms.
random number 6 generation time was 491 ms.
random number 7 generation time was 87 ms.
random number 8 generation time was 65 ms.
random number 9 generation time was 49 ms.
random number 10 generation time was 385 ms.
random number generation time was 1700 ms. Average = 170 ms



Aucune idée?

merci d'avance