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
.
Параметры можно использовать Get-Random
для указания минимальных и максимальных значений, количества объектов, возвращаемых из коллекции, или начального числа.
Внимание
Get-Random
не гарантирует криптографически безопасную случайность. Начальное значение используется для текущей команды и для всех последующих Get-Random
команд в текущем сеансе, пока не будет использоваться SetSeed еще раз или закройте сеанс. Не удается сбросить начальное значение по умолчанию.
Преднамеренное задание начального значения приводит к неизлучаемому повторяемому поведению. Его следует использовать только при попытке воспроизвести поведение, например при отладке или анализе скрипта, включающего Get-Random
команды. Помните, что начальное значение может быть задано другим кодом в том же сеансе, например импортированным модулем.
PowerShell 7.4 включает Get-SecureRandom, что обеспечивает криптографическую безопасность случайности.
Примеры
Пример 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,93.
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
32
25
93
95
# Commands with the same seed aren't random
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100 -SetSeed 23
32
32
32
# SetSeed results in a repeatable series
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100
Get-Random -Maximum 100
Get-Random -Maximum 100
32
25
93
95
Пример 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 превышает количество объектов в коллекции, все объекты в коллекции возвращаются в случайном порядке.
Тип: | Int32 |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-InputObject
Определяет коллекцию объектов. Get-Random
получает случайные выбранные объекты в случайном порядке из коллекции до числа, указанного счетчиком. Введите объекты, переменную, содержащую объекты, либо получающую их команду или выражение. Вы также можете передать коллекцию объектов Get-Random
в .
Начиная с PowerShell 7 параметр InputObject принимает массивы, которые могут содержать пустую строку или $null
. Массив можно отправить по конвейеру или в качестве значения параметра InputObject .
Тип: | Object[] |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Maximum
Определяет максимальное значение случайного числа. Get-Random
возвращает значение, которое меньше максимального значения (не равно). Введите целое число, число с плавающей запятой двойной точности или объект, который можно преобразовать в целочисленное или двойное число, например числовую строку ("100").
Значение Maximum должно быть больше (не равно) значению Minimum. Если значение максимального или минимального значения является числом с плавающей запятой, Get-Random
возвращает случайно выбранное число с плавающей запятой.
Если значение минимального 32-разрядного целого числа равно 64-разрядному, значение по умолчанию — Int32.MaxValue.
Если значение "Минимальное" является двойным (число с плавающей запятой), значение по умолчанию — Double.MaxValue. В противном случае значение по умолчанию — Int32.MaxValue.
Тип: | Object |
Position: | 0 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Minimum
Определяет минимальное значение случайного числа. Введите целое число, число с плавающей запятой двойной точности или объект, который можно преобразовать в целочисленное или двойное число, например числовую строку ("100"). Значение по умолчанию — 0 (ноль).
Значение минимального значения должно быть меньше (не равно) значению Maximum. Если значение максимального или минимального значения является числом с плавающей запятой, Get-Random
возвращает случайно выбранное число с плавающей запятой.
Тип: | Object |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-SetSeed
Определяет начальное значение случайного числа. При использовании SetSeed командлет создает псевдорандомные номера, которые не защищены криптографически.
Внимание
Задание начального значения приводит к не случайному поведению. Его следует использовать только при попытке воспроизвести поведение, например при отладке или анализе скрипта, включающего Get-Random
команды.
Это начальное значение используется для текущей команды и для всех последующих Get-Random
команд в текущем сеансе, пока не будет использоваться SetSeed еще раз или закройте сеанс. Не удается сбросить начальное значение по умолчанию.
Тип: | Nullable<T>[Int32] |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Shuffle
Возвращает всю коллекцию в случайном порядке.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Вы можете передать любой объект в этот командлет. Он выбирает значения случайным образом из конвейерных объектов.
Выходные данные
Этот командлет возвращает целое число или число с плавающей запятой или объект, выбранный случайным образом из отправленной коллекции.
Примечания
Get-Random
не всегда возвращает тот же тип данных, что и входное значение. В следующей таблице показан тип вывода для каждого из числовых типов входных данных.
Тип ввода | Тип выходных данных |
---|---|
SByte | Двойной |
Байт | Двойной |
Int16 | Двойной |
UInt16 | Двойной |
Int32 | Int32 |
UInt32 | Двойной |
Int64 | Int64 |
UInt64 | Двойной |
Двойной | Двойной |
Одна | Двойной |
Начиная с Windows PowerShell 3.0, Get-Random
поддерживает 64-разрядные целые числа. В Windows PowerShell 2.0 все значения приведение к System.Int32.
Начиная с PowerShell 7 параметр InputObject в наборе параметров RandomListItemParameterSet принимает массивы, содержащие пустую строку или$null
. В более ранних версиях PowerShell только параметр Maximum в наборе параметров RandomNumberParameterSet принял пустую строку или $null
.
Связанные ссылки
PowerShell