Question Tirage 3 personnes aléatoirement

Plus d'informations
il y a 7 ans 10 mois #25404 par powershelltraining
Bonjour,

J'aimerai créer un script permettant de créer des groupes composés de 3 personnes au hasard et les afficher en sortie.

Pour l'instant, j'ai fais ça qui permet d'afficher des personnes au hasard mais je bloque... D'ailleurs le dernier prénom de mon tableau il n'y a que la première lettre qui s'affiche à chaque fois, je ne comprends pas pourquoi.
Je pensais faire une boucle de 1 à 3 et affecter au fur et à mesure 3 personnes aux groupes, mais je bloque toujours... j'aurai besoin de pistes.

Merci d'avance.
===============================
[code:1]#creation du tableau
$personSelected = @()

$personSelected += \"Paul\"
$personSelected += \"Pierre\"
$personSelected += \"Jack\"
$personSelected += \"Marc\"
$personSelected += \"Luc\"
$personSelected += \"Camille\"
$personSelected += \"Karine\"
$personSelected += \"Lucie\"
$personSelected += \"Pauline\"
$personSelected += \"Sophie\"
$personSelected += \"Celine\"
$personSelected += \"Erica\"

$length = $personSelected.Length


for ($i=$length; $i -ge 0; $i--)
{

if($i -eq 0)
{
return \"FINI\";
}


$nb= get-random -maximum $i
Write-Host $personSelected[$nb]
$personSelected = $personSelected | Where-Object { $_ -ne $personSelected[$nb] }
$i
}
[/code:1]
Message édité par: powershelltraining, à: 22/05/18 12:39

Message édité par: Arnaud, à: 22/05/18 13:31<br><br>Message édité par: Arnaud, à: 30/05/18 09:21

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 10 mois #25406 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:Powershell script
Hello hello !!

Ton besoin est un excellent exercice sur la manipulation des tableaux :lol:

Voilà ma solution : A chaque itération (choix aléatoire de 3 personnes) on retire du tableau de départ les personnes selectionnées et on recommence.

Pour se faire il faut utiliser un tableau de type ArrayList car celui-ci possède une méthode Remove() qui est très pratique pour retirer des éléments; chose qui n'est pas possible avec un tableau classique en PowerShell.

[code:1]
[System.Collections.ArrayList]$tbPers = 'Paul', 'Pierre', 'Jack', 'Marc', 'Luc', 'Camille', 'Karine', 'Lucie', 'Pauline', 'Sophie', 'Celine', 'Erica'

0..2 | foreach -Begin {$gr=@{}} -Process { $selection = $tbPers | Get-Random -Count 3; $gr[$_] = $selection; $selection | foreach {$tbPers.remove($_)} }

[/code:1]

0..2 | foreach {..} permet de faire boucler 3 fois. C'est une façon courante de procéder en PowerShell car c'est plus simple qu'une boucle for.

Le résultat sera stocké dans la table de hachage $gr.

[code:1]

PS C:\&gt; $gr

Name Value
----
2 {Paul, Pierre, Karine}
1 {Marc, Sophie, Jack}
0 {Lucie, Pauline, Camille}
[/code:1]

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.035 secondes
Propulsé par Kunena