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 превышает количество объектов в коллекции, все объекты в коллекции возвращаются в случайном порядке.
Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Определяет коллекцию объектов. Get-Randomполучает случайные выбранные объекты в случайном порядке из коллекции до числа, указанного счетчиком. Введите объекты, переменную, содержащую объекты, либо получающую их команду или выражение. Вы также можете передать коллекцию объектов 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 возвращает значение, которое меньше максимального значения (не равно). Введите целое число, число с плавающей запятой двойной точности или объект, который можно преобразовать в целочисленное или двойное число, например числовую строку ("100").

Значение Maximum должно быть больше (не равно) значению Minimum. Если значение максимального или минимального значения является числом с плавающей запятой, Get-Random возвращает случайно выбранное число с плавающей запятой.

Если значение минимального 32-разрядного целого числа равно 64-разрядному, значение по умолчанию — Int32.MaxValue.

Если значение "Минимальное" является двойным (число с плавающей запятой), значениепо умолчанию — Double.MaxValue. В противном случае значение по умолчанию — Int32.MaxValue.

Type:Object
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Minimum

Определяет минимальное значение случайного числа. Введите целое число, число с плавающей запятой двойной точности или объект, который можно преобразовать в целочисленное или двойное число, например числовую строку ("100"). Значение по умолчанию — 0 (ноль).

Значение минимального значения должно быть меньше (не равно) значению Maximum. Если значение максимального или минимального значения является числом с плавающей запятой, Get-Random возвращает случайно выбранное число с плавающей запятой.

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SetSeed

Определяет начальное значение случайного числа. При использовании SetSeed командлет создает псевдорандомные номера, которые не защищены криптографически.

Внимание

Задание начального значения приводит к не случайному поведению. Его следует использовать только при попытке воспроизвести поведение, например при отладке или анализе скрипта, включающего 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

Входные данные

Object

Вы можете передать любой объект в этот командлет. Он выбирает значения случайным образом из конвейерных объектов.

Выходные данные

Int32

Int64

Double

PSObject

Этот командлет возвращает целое число или число с плавающей запятой или объект, выбранный случайным образом из отправленной коллекции.

Примечания

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.