Get-Random (Microsoft.PowerShell.Utility)
Get-Random
- Модуль:
- Microsoft.PowerShell.Utility
Получает случайное число или случайным образом выбирает объекты из коллекции.
Синтаксис
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
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-InputObject
Определяет коллекцию объектов. Get-Random получает случайно выбранные объекты в случайном порядке из коллекции до числа, указанного в параметре Count. Введите объекты, переменную, содержащую объекты, или команду или выражение, получающее объекты. Вы также можете передать коллекцию объектов в Get-Random.
Начиная с PowerShell 7, параметр InputObject принимает массивы, которые могут содержать пустую строку или $null. Массив можно отправить по конвейеру или как значение параметра InputObject.
- Тип :
Object[]
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-Maximum
Указывает максимальное значение случайного числа. Get-Random возвращает значение, меньшее максимального (не равное). Введите целое число, число двойной точности с плавающей запятой или объект, который можно преобразовать в целое или двойное число, например числовую строку («100»).
Значение Максимум должно быть больше (не равно) значения Минимум. Если значение Максимум или Минимум является числом с плавающей запятой, Get-Random возвращает случайно выбранное число с плавающей запятой.
На 64-разрядном компьютере, если значение Минимум является 32-битным целым числом, значением по умолчанию Максимум является Int32.MaxValue.
Если значение Минимум равно двойному значению (число с плавающей запятой), значением по умолчанию Максимум является Double.MaxValue. В противном случае значением по умолчанию является Int32.MaxValue.
- Тип :
Объект
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Minimum
Указывает минимальное значение для случайного числа. Введите целое число, число двойной точности с плавающей запятой или объект, который можно преобразовать в целое или двойное число, например числовую строку («100»). Значение по умолчанию — 0 (ноль).
Значение Минимум должно быть меньше (не равно) значения Максимум. Если значение Максимум или Минимум является числом с плавающей запятой, Get-Random возвращает случайно выбранное число с плавающей запятой.
- Тип :
Объект
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-SetSeed
Указывает начальное значение для генератора случайных чисел. При использовании SetSeed командлет генерирует псевдослучайные числа, которые не являются криптографически безопасными.
Осторожность
Установка начального значения приводит к неслучайному поведению. Его следует использовать только при попытке воспроизвести поведение, например, при отладке или анализе сценария, включающего команды Get-Random.
Это начальное значение используется для текущей команды и для всех последующих команд Get-Random в текущем сеансе, пока вы не используете SetSeed снова или не закроете сеанс. Вы не можете сбросить начальное значение до значения по умолчанию.
- Тип :
Nullable
[Int32] - Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Shuffle
Возвращает всю коллекцию в случайном порядке.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
Входы
Объект
В этот командлет можно передать любой объект. Он выбирает значения случайным образом из переданных по конвейеру объектов.
Выходы
Int32
Int64
Двойной
PSObject
Этот командлет возвращает целое число или число с плавающей запятой либо объект, случайно выбранный из отправленной коллекции.
Примечания
Get-Random не всегда возвращает тот же тип данных, что и входное значение. В следующей таблице показан тип вывода для каждого типа числового ввода.
- SByte
Двойной
- Byte
Двойной
- Int16
Двойной
- UInt16
Двойной
- Int32
Int32
- UInt32
Двойной
- Int64
Int64
- UInt64
Двойной
- Double
Двойной
- Single
Двойной
Начиная с Windows PowerShell 3.0, Get-Random поддерживает 64-битные целые числа. В Windows PowerShell 2.0 все значения приводятся к System.Int32.
Начиная с PowerShell 7, параметр InputObject в наборе параметров RandomListItemParameterSet принимает массивы, содержащие пустую строку или $null. В более ранних версиях PowerShell только параметр Maximum в наборе параметров RandomNumberParameterSet принимал пустую строку или $null.