Bonjour,
Je souhaite à partir d'une liste de x élements, extraire de manière aléatoire y élements; ces y élements doivent être tous différents les uns des autres.
Voilà comment je conçois mon script:
Au 1 er tour, il choisit aléatoirement un 1er élement
Au second tour, il chosit aléatoirement un 2nd élement sur les élements restants (il ne peux pas prendre l'élement choisi au 1er tour!)
Au troisième tour, il choisi un 3ième élement sur les élements restant (il ne peux pas prendre l'élement choisi au 1er et 2nd tour!)
Et ainsi de suite...
Je joins mon script.
- Dans mon exemple j'ai 7 élements et il me choisi que 4 élements au final. Pourquoi je ne peux pas en avoir 7?
- Comment indiquer que je souhaite extraire seulement y élements de x?
Pourriez vous m'aider?
Merci par avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 mans 23 03 big 01 01 axe 12 11 mad 03 11 jim 23 01 ble 15 11 pont 02 02
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 my %hash=(); my $i=0; my $j=0; my @liste_cle; open FILE, "test" or die $!; while(my $ligne = <FILE>){ chomp $ligne; $i++; my ($info,$date,$age) = split /\t/, $ligne; $hash{info}="$info"."\t"."$date"."\t"."$age"; # Obtenir la liste des clé du Hash @liste_cle = keys( %hash ); } print"la liste des clé du hash\n"; print "@liste_cle \n"; my $size = @liste_cle; print "nombre d'élements dans mon tableau :$size\n"; print"\n"; # Afficher les clés du Hash foreach my $mois (@liste_cle) { $j++; print "TOUR: $j\n"; #choix aléatoire d'une clé dans le tableau my $choix = $liste_cle[rand @liste_cle]; print "***$choix\n"; #Afficher la valeur associé à la clé aléatoire print "valeur associé à la clé aléatoire: ", $hash{$choix}, "\n"; if($choix) # Si le tirage existe { print "TIRAGE EXISTE\n"; delete($hash{$choix}); # On le supprime du hasH print Dumper(\%hash); @liste_cle = grep { $_ ne "$choix" } @liste_cle; } }
Partager