Поделиться через


Get-Random

Получает случайное число или выбирает объекты случайным образом из коллекции.

Синтаксис

RandomNumberParameterSet (по умолчанию)

Get-Random
    [[-Maximum] <Object>]
    [-SetSeed <Int32>]
    [-Minimum <Object>]
    [-Count <Int32>]
    [<CommonParameters>]

RandomListItemParameterSet

Get-Random
    [-InputObject] <Object[]>
    [-SetSeed <Int32>]
    [-Count <Int32>]
    [<CommonParameters>]

ShuffleParameterSet

Get-Random
    [-InputObject] <Object[]>
    [-SetSeed <Int32>]
    [-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 указывает массив, содержащий пустую строку () и .

Get-Random -InputObject @('a','',$null)

Get-Random возвращает a, пустую строку или $null. Пустая строка отображается как пустая строка и $null возвращается в запрос PowerShell.

Параметры

-Count

Указывает количество возвращаемых случайных объектов. Значение по умолчанию — 1.

При использовании InputObject, содержащего коллекцию:

  • Каждый случайный выбранный элемент возвращается только один раз.
  • Если значение Count превышает количество объектов в коллекции, все объекты в коллекции возвращаются в случайном порядке.

Свойства параметра

Тип:Int32
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

RandomNumberParameterSet
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False
RandomListItemParameterSet
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-InputObject

Задает коллекцию объектов. Get-Random получает случайные выбранные объекты в случайном порядке из коллекции до числа, указанного Count. Введите объекты, переменную, содержащую объекты, или команду или выражение, которое получает объекты. Можно также передать коллекцию объектов в Get-Random.

Начиная с PowerShell 7 параметр inputObject принимает массивы, которые могут содержать пустую строку или $null. Массив можно передать по конвейеру или как значение параметра InputObject.

Свойства параметра

Тип:

Object[]

Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

RandomListItemParameterSet
Position:0
Обязательно:True
Значение из конвейера:True
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False
ShuffleParameterSet
Position:0
Обязательно:True
Значение из конвейера:True
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Maximum

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

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

На 64-разрядном компьютере, если значение Минимальное имеет 32-разрядное целое число, значение по умолчанию Максимальное равно Int32.MaxValue.

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

Свойства параметра

Тип:Object
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

RandomNumberParameterSet
Position:0
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Minimum

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

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

Свойства параметра

Тип:Object
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

RandomNumberParameterSet
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-SetSeed

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

Осторожность

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

Это начальное значение используется для текущей команды и для всех последующих команд Get-Random в текущем сеансе, пока не будет использоваться SetSeed или закрыть сеанс. Не удается сбросить начальное значение по умолчанию.

Свойства параметра

Тип:

Nullable<T>[Int32]

Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Shuffle

Возвращает всю коллекцию в случайном порядке.

Свойства параметра

Тип:SwitchParameter
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

ShuffleParameterSet
Position:Named
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

CommonParameters

Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.

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

Object

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

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

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.