Perl choisir un nbre ou mot en aleatoire
snufx
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
salut a tous
J'ai commence le perl depuis peu et la je suis un peu bloquer.
pourriez vous m'aider a comprendre.
voila mon soucis je choisis aleatoirement des chiffres en ecrivant ce programme
#!/usr/bin/perl;
use strict;
my @cle = (1,3,5,6,8,10);
my @cle1 = (1..100);
foreach $i (@cle) {
$cle[$i] = int(rand());
}
my @cle_aleatoire = @cle;
#print "$cle_aleatoire[0]\n";
for (my $i = 0; $i < 1; $i++) {
$cle1[$i] = int(rand(99)+1);
}
my @cle1_aleatoire = @cle1;
print "$cle1_aleatoire[0]\n";
for (my $i = 0; $i < 1; $i++) {
$cle[$i] = int(rand(5)+1);
}
my @cle_aleatoire = @cle;
print "$cle_aleatoire[0]\n";
il marche tres bien pour @cle1 mais pas pour @cle.
mon probleme est que des que je decide de mettre des valeurs bien definit a mon tableau, j'obtient des nbres ou valeur autre que celle contenu dans mon tableau.
Cela fait quelques jours que je tente differente chose,utilisation de (hash ) mais sans succes quequ'un pourrait il m 'eclairer merci
J'ai commence le perl depuis peu et la je suis un peu bloquer.
pourriez vous m'aider a comprendre.
voila mon soucis je choisis aleatoirement des chiffres en ecrivant ce programme
#!/usr/bin/perl;
use strict;
my @cle = (1,3,5,6,8,10);
my @cle1 = (1..100);
foreach $i (@cle) {
$cle[$i] = int(rand());
}
my @cle_aleatoire = @cle;
#print "$cle_aleatoire[0]\n";
for (my $i = 0; $i < 1; $i++) {
$cle1[$i] = int(rand(99)+1);
}
my @cle1_aleatoire = @cle1;
print "$cle1_aleatoire[0]\n";
for (my $i = 0; $i < 1; $i++) {
$cle[$i] = int(rand(5)+1);
}
my @cle_aleatoire = @cle;
print "$cle_aleatoire[0]\n";
il marche tres bien pour @cle1 mais pas pour @cle.
mon probleme est que des que je decide de mettre des valeurs bien definit a mon tableau, j'obtient des nbres ou valeur autre que celle contenu dans mon tableau.
Cela fait quelques jours que je tente differente chose,utilisation de (hash ) mais sans succes quequ'un pourrait il m 'eclairer merci
A voir également:
- Perl choisir un nbre ou mot en aleatoire
- Trousseau mot de passe iphone - Guide
- Mot de passe - Guide
- Mot de passe administrateur - Guide
- Mot de passe bios perdu - Guide
- Mettre un mot de passe sur un dossier - Guide
4 réponses
Salut,
ça te va comme ça?
Le script
ça te va comme ça?
Le script
~/trash/vider$ cat ccm.pl #!/usr/bin/perl; use strict; my @cle = (1,3,5,6,8,10); my @cle1 = 1..100; my @cle_aleatoire = map { rand @cle } @cle; my @cle1_aleatoire = map { rand @cle1 } @cle1; map { s/\..*// } @cle_aleatoire,@cle1_aleatoire; print "$cle_aleatoire[0]\n"; print "$cle1_aleatoire[0]\n"; print "@cle_aleatoire\n"; print "@cle1_aleatoire\n";Le résultat
~/trash/vider$ perl ccm.pl 4 95 4 2 2 5 1 5 95 72 95 17 99 18 36 25 8 35 78 12 71 40 90 73 52 14 38 72 43 63 31 84 46 76 30 46 55 44 48 60 87 41 37 60 67 66 75 44 33 38 53 72 73 2 90 49 77 2 52 3 36 65 15 19 54 36 67 31 89 4 71 16 8 99 20 99 80 51 12 27 64 33 57 59 28 68 67 97 35 65 25 92 22 10 94 5 74 77 42 65 34 66 17 79 76 85 65 78 ~/trash/vider$ perl ccm.pl 4 66 4 0 3 1 0 1 66 77 1 22 64 53 88 76 64 22 39 21 50 27 33 38 56 51 23 91 0 3 70 91 66 7 39 73 36 59 64 75 58 34 9 91 4 79 94 30 50 38 43 62 16 19 24 81 21 97 99 88 19 65 97 59 45 17 34 0 26 35 62 36 95 41 24 28 91 29 95 99 39 68 74 98 1 88 19 32 88 75 80 7 2 59 38 49 69 83 76 41 42 43 62 66 64 44 90 75 ~/trash/vider$ perl ccm.pl 2 28 2 5 2 5 5 4 28 69 22 58 62 40 85 25 81 41 23 35 21 22 12 94 57 1 61 39 87 3 51 69 62 61 33 55 77 6 91 26 92 44 91 60 78 88 16 21 88 21 21 65 37 42 8 74 7 8 39 55 6 18 93 98 46 57 20 20 77 7 56 84 54 5 8 20 78 7 66 35 70 70 46 16 17 8 28 40 34 64 82 1 86 23 74 27 50 88 89 91 4 25 70 77 33 68 9 34 ~/trash/vider$ perl ccm.pl 2 65 2 4 2 3 3 1 65 40 64 85 98 55 18 6 25 59 63 25 34 78 4 42 51 73 71 45 86 61 86 82 73 18 96 0 11 93 29 2 74 44 29 34 79 12 16 92 99 92 55 65 6 95 65 19 54 23 46 43 14 31 59 10 37 96 65 63 60 42 25 62 33 93 21 5 3 56 92 79 3 56 30 96 86 81 60 23 30 31 15 60 63 86 72 23 82 48 2 98 32 76 90 7 47 32 12 63 ~/trash/vider$ perl ccm.pl 0 50 0 5 1 1 4 3 50 46 10 28 2 65 35 4 73 44 82 94 87 7 5 84 23 56 99 74 65 31 94 86 85 3 34 76 44 86 13 50 81 69 23 60 63 26 36 48 92 58 8 38 27 11 37 97 48 69 28 35 41 67 14 77 13 4 13 68 87 79 36 49 22 97 86 36 15 99 41 81 86 27 60 98 29 35 27 53 11 14 43 25 80 21 15 97 37 25 8 49 54 63 90 45 1 94 54 79
grand merci lami20j pour ta reponse
Mais une chose m'intrigue pourquoi je n'obtiens pas que les valeurs contenues dans le tableau @cle?
Les valeurs 2,0 s'affiche alors quel ne devrait pas.
Mais une chose m'intrigue pourquoi je n'obtiens pas que les valeurs contenues dans le tableau @cle?
Les valeurs 2,0 s'affiche alors quel ne devrait pas.
he he une solution qui a l'air de marcher et beaucoup me plaire.Bien que je remercie lami20j et tous les autres pour leur reponse rapide malgre la diversite des questions.
my @values1 = (1,3,5,6,8,10);
for (1) {
#for (1..5) {
print "tirage aléatoire: ", $values1[rand @values1], "\n";
}
et avec du texte se serait plus ca
my @values = qw(robert roger anatole);
print "bonjour ", $values[rand @values], "\n";
my @values1 = (1,3,5,6,8,10);
for (1) {
#for (1..5) {
print "tirage aléatoire: ", $values1[rand @values1], "\n";
}
et avec du texte se serait plus ca
my @values = qw(robert roger anatole);
print "bonjour ", $values[rand @values], "\n";
Ben,
en revanche avec la fonction que j'ai écrit le tableau et bien melanger
il ne te reste qu'à afficher le 1er élément après chaque tirage
j'ai pris ton script comme point de départ et pas ce que tu veux en fait ("Un tirage aléatoire")
j'espère que tu as compirs pourquoi $cle[ rand @cle] te donne le bon résultat :-))
en revanche avec la fonction que j'ai écrit le tableau et bien melanger
il ne te reste qu'à afficher le 1er élément après chaque tirage
j'ai pris ton script comme point de départ et pas ce que tu veux en fait ("Un tirage aléatoire")
j'espère que tu as compirs pourquoi $cle[ rand @cle] te donne le bon résultat :-))
Salut,
en fait le résultat c'est bon
en revanche ce n'est pas ça que tu veux ou j'ai mal compris :-))
je suppose que tu veux tout simplement melanger les éléments de tes tableaux
tu dois écrire quelque chose comme ça
en fait le résultat c'est bon
en revanche ce n'est pas ça que tu veux ou j'ai mal compris :-))
je suppose que tu veux tout simplement melanger les éléments de tes tableaux
tu dois écrire quelque chose comme ça
#!/usr/bin/perl; use strict; my @cle = (1,3,5,6,8,10); melanger(\@cle_alea); sub melanger{ my $tmp = shift; for(my $i = @$tmp;--$i;){ my $j = int rand ($i + 1); @$tmp[$i,$j] = @$tmp[$j,$i]; } } print "@cle_alea\n";