Get-Random
Возвращает случайное число или случайным образом выбирает объекты из коллекции.
Синтаксис
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>]
Описание
Командлет Get-Random
получает случайно выбранное число. Если вы отправляете коллекцию объектов в Get-Random
, она получает один или несколько случайно выбранных объектов из коллекции.
Без параметров или входных данных Get-Random
команда возвращает случайно выбранное 32-разрядное целое число без знака в диапазоне от 0 (нуль) до Int32.MaxValue (0x7FFFFFFF
, 2,147,483,647
).
По умолчанию Get-Random
создает криптографически безопасную случайность с помощью класса RandomNumberGenerator .
С помощью параметров Get-Random
можно указать минимальное и максимальное значения, количество объектов, возвращаемых из коллекции, или начальное число.
Внимание!
Установка начального значения намеренно приводит к неизлучаемому повторяемому поведению. Его следует использовать только при попытке воспроизвести поведение, например при отладке или анализе скрипта, содержащего Get-Random
команды.
Это начальное значение используется для текущей команды и для всех последующих Get-Random
команд в текущем сеансе до тех пор, пока вы не будете повторно использовать SetSeed или не закрыть сеанс. Вы не можете сбросить начальное значение до значения по умолчанию.
Примеры
Пример 1. Получение случайного целого числа
Эта команда получает случайное целое число в диапазоне от 0 (нуль) до Int32.MaxValue.
Get-Random
3951433
Пример 2. Получение случайного целого числа от 0 до 99
Get-Random -Maximum 100
47
Пример 3. Получение случайного целого числа от -100 до 99
Get-Random -Minimum -100 -Maximum 100
56
Пример 4. Получение случайного числа с плавающей запятой
Эта команда возвращает случайное число с плавающей запятой, которое больше или равно 10,7 и меньше 20,92.
Get-Random -Minimum 10.7 -Maximum 20.93
18.08467273887
Пример 5. Получение случайного целого числа из массива
Эта команда возвращает случайное число из указанного массива.
1, 2, 3, 5, 8, 13 | Get-Random
8
Пример 6. Получение нескольких случайных целых чисел из массива
Эта команда получает три случайно выбранных числа в случайном порядке из массива.
1, 2, 3, 5, 8, 13 | Get-Random -Count 3
3
1
13
Пример 7. Рандомизация всей коллекции
Начиная с PowerShell 7.1, можно использовать параметр Shuffle , чтобы вернуть всю коллекцию в случайном порядке.
1, 2, 3, 5, 8, 13 | Get-Random -Shuffle
2
3
5
1
8
13
Пример 8. Получение случайного нечислового значения
Эта команда возвращает случайное значение из коллекции, элементы которой не являются числами.
"red", "yellow", "blue" | Get-Random
yellow
Пример 9. Использование параметра SetSeed
В этом примере показан результат применения параметра SetSeed.
Так как SetSeed создает неслучайное поведение, он обычно используется только для воспроизведения результатов, например при отладке или анализе скрипта.
# 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
Пример 10. Получение случайных файлов
Эти команды получают случайно выбранную выборку из 50 файлов с C:
диска локального компьютера.
$Files = Get-ChildItem -Path C:\* -Recurse
$Sample = $Files | Get-Random -Count 50
Пример 11. Ролл справедливых кубиков
В этом примере 1200 раз выполняется свертывая смерть и подсчитывается результат. Первая команда ForEach-Object
повторяет вызов Get-Random
из конвейера в номерах (1–6). Результаты группируются по значению с помощью Group-Object
и форматируются как таблица с 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
Пример 12. Использование параметра Count
Теперь можно использовать параметр Count без отправки объектов в Get-Random
.
В следующем примере возвращается три случайных числа меньше 10.
Get-Random -Count 3 -Maximum 10
9
0
8
Пример 13. Использование параметра InputObject с пустой строкой или $null
В этом примере параметр InputObject указывает массив, содержащий пустую строку (''
) и $null
.
Get-Random -InputObject @('a','',$null)
Get-Random
возвращает значение a
, пустую строку или $null
. Пустой жало отображается как пустая строка и $null
возвращается в командной строке PowerShell.
Параметры
-Count
Указывает количество возвращаемых случайных объектов или чисел. Значение по умолчанию — 1.
При использовании с InputObject
значением , если значение Count превышает количество объектов в коллекции, Get-Random
возвращает все объекты в случайном порядке.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Определяет коллекцию объектов. Get-Random
получает случайным образом выбранные объекты в случайном порядке из коллекции до числа, указанного параметром Count. Введите объекты, переменную, содержащую объекты, либо получающую их команду или выражение. Вы также можете передать коллекцию объектов в Get-Random
.
Начиная с PowerShell 7, параметр InputObject принимает массивы, которые могут содержать пустую строку или $null
. Массив можно отправить по конвейеру или в качестве значения параметра InputObject .
Type: | Object[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Maximum
Определяет максимальное значение случайного числа. Get-Random
возвращает значение, которое меньше максимального значения (не равно). Введите целое число, число двойной точности с плавающей запятой или объект, который можно преобразовать в целое число или double, например числовую строку ("100").
Значение Maximum должно быть больше (не равно) значения Minimum. Если значение Maximum или Minimum является числом с плавающей запятой, Get-Random
возвращает случайно выбранное число с плавающей запятой.
На 64-разрядном компьютере, если значение Minimum является 32-разрядным целым числом, значением по умолчанию является Максимальное значение Int32.MaxValue.
Если минимальное значение равно double (число с плавающей запятой), значение по умолчанию Максимальное значение — Double.MaxValue. В противном случае значение по умолчанию — Int32.MaxValue.
Type: | Object |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Minimum
Определяет минимальное значение случайного числа. Введите целое число, число двойной точности с плавающей запятой или объект, который можно преобразовать в целое число или double, например числовую строку ("100"). Значение по умолчанию — 0 (нуль).
Значение Minimum должно быть меньше значения Maximum. Если значение Maximum или Minimum является числом с плавающей запятой, Get-Random
возвращает случайно выбранное число с плавающей запятой.
Type: | Object |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SetSeed
Определяет начальное значение случайного числа. При использовании SetSeed командлет использует метод System.Random для создания псевдослучайных чисел, которые не являются криптографически безопасными.
Внимание!
Установка начального значения приводит к не случайному поведению. Его следует использовать только при попытке воспроизвести поведение, например при отладке или анализе скрипта, включающего Get-Random
команды.
Это начальное значение используется для текущей команды и для всех последующих Get-Random
команд в текущем сеансе до тех пор, пока вы снова не будете использовать SetSeed или не закройте сеанс. Вы не можете сбросить начальное значение до значения по умолчанию.
Type: | Nullable<T>[Int32] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Shuffle
Возвращает всю коллекцию в случайном порядке.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
Можно передать по конвейеру один или несколько объектов. Get-Random
случайным образом выбирает значения из объектов, по конвейеру.
Выходные данные
System.Int32, System.Int64, System.Double
Get-Random
возвращает целое число или число с плавающей запятой или объект, выбранный случайным образом из отправленной коллекции.
Примечания
По умолчанию Get-Random
создает криптографически безопасную случайность с помощью класса RandomNumberGenerator .
Get-Random
Не всегда возвращает тот же тип данных, что и входное значение. В следующей таблице показан тип выходных данных для каждого из числовых типов входных данных.
Тип входных данных | Тип выходных данных |
---|---|
SByte | Double |
Byte | Double |
Int16 | Double |
UInt16 | Double |
Int32 | Int32 |
UInt32 | Double |
Int64 | Int64 |
UInt64 | Double |
Double | Double |
Single | Double |
Начиная с Windows PowerShell 3.0, Get-Random
поддерживает 64-разрядные целые числа. В Windows PowerShell 2.0 все значения приведены к System.Int32.
Начиная с PowerShell 7, параметр InputObject в наборе параметров RandomListItemParameterSet принимает массивы, содержащие пустую строку или $null
. В более ранних версиях PowerShell только параметр Maximum в наборе параметров RandomNumberParameterSet принимал пустую строку или $null
.