Bonjour à tous,
Mon code est fonctionnel, mais je crains qu'il ne soit pas optimal. En effet, il tourne depuis plus de 3h maintenant sur des données tests ... je n'ose pas imaginer ce que cela pourrait donner sur les données que j'ai à traiter
Voilà le code :
J'ai donc un tableau @ArrayAllProbesRandom qui contient l'ensemble de mes données. Je veux sélectionner un élément de manière aléatoire $NbOfProbesToExclude fois (12000 éléments dans l'exemple qui tourne).
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 use List::Compare; for ( my $i = 0; $i<$NbOfProbesToExclude;$i++ ) { my $ScalarRandom = scalar(@ArrayAllProbesRandom); my $Max = $ScalarRandom -1; my $IdProbeToExclude = int( rand() * $Max ); my @ArrayToExclude; push(@ArrayToExclude,$ArrayAllProbesRandom[$IdProbeToExclude]); print "\n\t - $ArrayAllProbesRandom[$IdProbeToExclude]\n"; # Soustraire cette case du tableau my $ListCompareNew = List::Compare->new(\@ArrayAllProbesRandom, \@ArrayToExclude); @ArrayAllProbesRandom = $ListCompareNew->get_unique;; }
J'utilise le module List::Compare afin de soustraire l'élément sélectionné du tableau final pour la prochaine itération afin de ne pas choisir deux fois le même élément.
Comme je l'ai dit, le code tourne .... mais si vous avez une idée pour qu'il soit plus rapide, je suis preneuse!
Partager