Coucou !!!![]()
Sur l'un de mes programmes, j'ai un hachage nommé %Phrase dont chaque clé est un hachage pointant vers un autre hachage. Le dernier hachage possède différentes valeurs sous forme de liste.
Dans chaque liste, j'ai 12 phrases différentes et, pour les besoins d'un tiers programme, je pioche aléatoirement l'une des 12 phrases.
Mon seul soucis, c'est que je suis obligé de faire un random sur une fourchette comprise entre 1 et 12 mais j'aimerais bien rajouter plein de phrases dans certaines clés. Aussi, le max du random ne serait plus 12 mais 18 ou 24 par exemple.
Et c'est là mon soucis : je ne tiens absolument pas à gérer ces bibliothèques de phrases dont le nombre dépasserait 12 à part dans un autre random. Mais comment faire pour demander (sans que le temps d'exécution du programme n'en pâtisse) à Perl de faire du random sur la fourchette en descendant la borne supérieure de 1 s'il ne trouve pas de phrase à l'indice choisi par le random ?
Je ne sais pas si c'est bien clair, c'est surtout pas évident à expliquer![]()
Qqun a une idée à m'exposer ?
Edit : pour faire plus simple, admettons ce hachage là :
Dans mon exemple, la borne supérieure maximale est 7 (0 pour la borne inférieure).
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 use strict; my %hash; $hash{TOTO}[0] = "une phrase"; $hash{TOTO}[1] = "une phrase"; $hash{TOTO}[2] = "une phrase"; $hash{TOTO}[3] = "une phrase"; $hash{TITI}[0] = "une phrase"; $hash{TITI}[1] = "une phrase"; $hash{TITI}[2] = "une phrase"; $hash{TITI}[3] = "une phrase"; $hash{TATA}[0] = "une phrase"; $hash{TATA}[1] = "une phrase"; $hash{TATA}[2] = "une phrase"; $hash{TATA}[3] = "une phrase"; $hash{TATA}[4] = "une phrase"; $hash{TATA}[5] = "une phrase"; $hash{TATA}[6] = "une phrase"; $hash{TATA}[7] = "une phrase";
A part faire :
Y a-t-il un autre moyen ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $_ = rand(7); while(! defined($hash{ma_cle_recherchee}[$_])) { --$_; } print "$hash{ma_cle_recherchee}[$_]\n";
Partager