Get-Random
Obtient un nombre aléatoire ou sélectionne de façon aléatoire des objets d'une collection.
Syntax
Get-Random
[-SetSeed <Int32>]
[[-Maximum] <Object>]
[-Minimum <Object>]
[-Count <Int32>]
[<CommonParameters>]
Get-Random
[-SetSeed <Int32>]
[-InputObject] <Object[]>
[-Count <Int32>]
[<CommonParameters>]
Get-Random
[-SetSeed <Int32>]
[-InputObject] <Object[]>
[-Shuffle]
[<CommonParameters>]
Description
L’applet Get-Random
de commande obtient un nombre sélectionné de manière aléatoire. Si vous envoyez une collection d’objets à Get-Random
, elle obtient un ou plusieurs objets sélectionnés de manière aléatoire de la collection.
Sans paramètres ni entrée, une Get-Random
commande retourne un entier non signé 32 bits sélectionné de manière aléatoire entre 0 (zéro) et Int32.MaxValue (0x7FFFFFFF
, 2,147,483,647
).
Par défaut, Get-Random
génère une randomité sécurisée par chiffrement à l’aide de la classe RandomNumberGenerator .
Vous pouvez utiliser les paramètres de Get-Random
pour spécifier les valeurs minimales et maximales, le nombre d’objets retournés à partir d’une collection ou un nombre initial.
Attention
La définition de la valeur de départ entraîne délibérément un comportement non aléatoire et reproductible. Il ne doit être utilisé que lors de la tentative de reproduction du comportement, par exemple lors du débogage ou de l’analyse d’un script qui inclut Get-Random
des commandes.
Cette valeur de départ est utilisée pour la commande actuelle et pour toutes les commandes suivantes Get-Random
dans la session active jusqu’à ce que vous utilisiez à nouveau SetSeed ou fermez la session. Vous ne pouvez pas rétablir la valeur par défaut de la valeur initiale.
Exemples
Exemple 1 : Obtenir un entier aléatoire
Cette commande obtient un entier aléatoire compris entre 0 (zéro) et Int32.MaxValue.
Get-Random
3951433
Exemple 2 : obtenir un entier aléatoire compris entre 0 et 99
Get-Random -Maximum 100
47
Exemple 3 : Obtenir un entier aléatoire compris entre -100 et 99
Get-Random -Minimum -100 -Maximum 100
56
Exemple 4 : Obtenir un nombre à virgule flottante aléatoire
Cette commande obtient un nombre à virgule flottante aléatoire supérieur ou égal à 10,7 et inférieur à 20,92.
Get-Random -Minimum 10.7 -Maximum 20.93
18.08467273887
Exemple 5 : Obtenir un entier aléatoire à partir d’un tableau
Cette commande obtient un nombre sélectionné de façon aléatoire dans le tableau spécifié.
1, 2, 3, 5, 8, 13 | Get-Random
8
Exemple 6 : Obtenir plusieurs entiers aléatoires à partir d’un tableau
Cette commande obtient trois nombres sélectionnés de manière aléatoire dans un ordre aléatoire à partir d’un tableau.
1, 2, 3, 5, 8, 13 | Get-Random -Count 3
3
1
13
Exemple 7 : Randomisation d’une collection entière
À partir de PowerShell 7.1, vous pouvez utiliser le paramètre Shuffle pour retourner la collection entière dans un ordre aléatoire.
1, 2, 3, 5, 8, 13 | Get-Random -Shuffle
2
3
5
1
8
13
Exemple 8 : Obtenir une valeur non numérique aléatoire
Cette commande retourne une valeur aléatoire depuis une collection non numérique.
"red", "yellow", "blue" | Get-Random
yellow
Exemple 9 : utiliser le paramètre SetSeed
Cet exemple montre l'utilisation du paramètre SetSeed.
Étant donné que SetSeed produit un comportement non aléatoire, il est généralement utilisé uniquement pour reproduire les résultats, par exemple lors du débogage ou de l’analyse d’un script.
# Commands with the default seed are pseudorandom
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100
Get-Random -Maximum 100
Get-Random -Maximum 100
74
56
84
46
# Commands with the same seed are not random
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100 -SetSeed 23
74
74
74
# SetSeed results in a repeatable series
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100
Get-Random -Maximum 100
Get-Random -Maximum 100
74
56
84
46
Exemple 10 : Obtenir des fichiers aléatoires
Ces commandes obtiennent un échantillon aléatoire de 50 fichiers à partir du C:
lecteur de l’ordinateur local.
$Files = Get-ChildItem -Path C:\* -Recurse
$Sample = $Files | Get-Random -Count 50
Exemple 11 : Lancer des dés justes
Cet exemple montre comment lancer un dé juste 1200 fois et compter les résultats. La première commande ForEach-Object
, répète l’appel à Get-Random
à à partir du canal canalé en nombres (1-6). Les résultats sont regroupés par leur valeur avec Group-Object
et mis en forme sous forme de tableau avec Select-Object
.
1..1200 | ForEach-Object {
1..6 | Get-Random
} | Group-Object | Select-Object Name,Count
Name Count
---- -----
1 206
2 199
3 196
4 226
5 185
6 188
Exemple 12 : Utiliser le paramètre Count
Vous pouvez maintenant utiliser le paramètre Count sans passer les objets vers Get-Random
.
L’exemple suivant obtient trois nombres aléatoires inférieurs à 10.
Get-Random -Count 3 -Maximum 10
9
0
8
Exemple 13 : Utiliser le paramètre InputObject avec une chaîne vide ou une $null
Dans cet exemple, le paramètre InputObject spécifie un tableau qui contient une chaîne vide (''
) et $null
.
Get-Random -InputObject @('a','',$null)
Get-Random
retourne soit a
, chaîne vide, soit $null
. La piqûre vide s’affiche sous la forme d’une ligne vide et $null
retourne à une invite PowerShell.
Paramètres
-Count
Spécifie le nombre d’objets aléatoires ou de nombres à retourner. La valeur par défaut est 1.
Lorsqu’il est utilisé avec InputObject
, si la valeur de Count dépasse le nombre d’objets dans la collection, Get-Random
retourne tous les objets dans un ordre aléatoire.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Spécifie une collection d'objets. Get-Random
obtient les objets sélectionnés de manière aléatoire dans l’ordre aléatoire de la collection jusqu’au nombre spécifié par Count. Entrez les objets, une variable contenant les objets, ou bien tapez une commande ou une expression qui obtient les objets. Vous pouvez également diriger une collection d’objets vers Get-Random
.
À compter de PowerShell 7, le paramètre InputObject accepte les tableaux qui peuvent contenir une chaîne vide ou $null
. Le tableau peut être envoyé dans le pipeline ou en tant que valeur de paramètre InputObject .
Type: | Object[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Maximum
Spécifie une valeur maximale pour le nombre aléatoire. Get-Random
retourne une valeur inférieure à la valeur maximale (non égale). Entrez un entier, un nombre à virgule flottante double précision ou un objet qui peut être converti en entier ou double, tel qu’une chaîne numérique (« 100 »).
La valeur de Maximum doit être supérieure à (différente de) la valeur de Minimum. Si la valeur de Maximum ou Minimum est un nombre à virgule flottante, Get-Random
retourne un nombre à virgule flottante sélectionné de manière aléatoire.
Sur un ordinateur 64 bits, si la valeur de Minimum est un entier 32 bits, la valeur par défaut de Maximum est Int32.MaxValue.
Si la valeur de Minimum est un double (nombre à virgule flottante), la valeur par défaut de Maximum est Double.MaxValue. Sinon, la valeur par défaut est Int32.MaxValue.
Type: | Object |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Minimum
Spécifie une valeur minimale pour le nombre aléatoire. Entrez un entier, un nombre à virgule flottante double précision ou un objet qui peut être converti en entier ou double, tel qu’une chaîne numérique (« 100 »). La valeur par défaut est 0 (zéro).
La valeur de Minimum doit être inférieure à (différente de) la valeur de Maximum. Si la valeur de Maximum ou Minimum est un nombre à virgule flottante, Get-Random
retourne un nombre à virgule flottante sélectionné de manière aléatoire.
Type: | Object |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SetSeed
Spécifie une valeur de départ pour le générateur de nombres aléatoires. Lorsque vous utilisez SetSeed, l’applet de commande utilise la méthode System.Random pour générer des nombres pseudo-aléatoires, ce qui n’est pas sécurisé par chiffrement.
Attention
La définition de la valeur initiale entraîne un comportement non aléatoire. Il ne doit être utilisé que lors de la tentative de reproduction du comportement, par exemple lors du débogage ou de l’analyse d’un script qui inclut Get-Random
des commandes.
Cette valeur de départ est utilisée pour la commande actuelle et pour toutes les commandes suivantes Get-Random
dans la session active jusqu’à ce que vous utilisiez à nouveau SetSeed ou fermez la session. Vous ne pouvez pas rétablir la valeur par défaut de la valeur initiale.
Type: | Nullable<T>[Int32] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Shuffle
Retourne la collection entière dans un ordre aléatoire.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entrées
Vous pouvez diriger un ou plusieurs objets. Get-Random
sélectionne des valeurs de façon aléatoire à partir des objets redirigés.
Sorties
System.Int32, System.Int64, System.Double
Get-Random
retourne un nombre entier ou à virgule flottante, ou un objet sélectionné de manière aléatoire à partir d’une collection envoyée.
Notes
Par défaut, Get-Random
génère une randomité sécurisée par chiffrement à l’aide de la classe RandomNumberGenerator .
Get-Random
ne retourne pas toujours le même type de données que la valeur d’entrée. Le tableau suivant montre le type de sortie pour chacun des types d’entrée numériques.
Type d’entrée | Type de sortie |
---|---|
SByte | Double |
Byte | Double |
Int16 | Double |
UInt16 | Double |
Int32 | Int32 |
UInt32 | Double |
Int64 | Int64 |
UInt64 | Double |
Double | Double |
Unique | Double |
À compter de Windows PowerShell 3.0, Get-Random
prend en charge les entiers 64 bits. Dans Windows PowerShell 2.0, toutes les valeurs sont converties en System.Int32.
À compter de PowerShell 7, le paramètre InputObject dans l’ensemble de paramètres RandomListItemParameterSet accepte les tableaux qui contiennent une chaîne vide ou $null
. Dans les versions antérieures de PowerShell, seul le paramètre Maximum dans le jeu de paramètres RandomNumberParameterSet acceptait une chaîne vide ou $null
.