Поиск по сайту:

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.