Мечтая о PowerShell V2 : случайные числа и Get-Random
Тобиас Вельтнер (Tobias Weltner) пишет блог под названием Dreaming In PowerShell (Мечтая о PowerShell) , и он недавно опубликовал способ получения уникальных случайных чисел в PowerShell. Dreaming In PowerShell – это действительно классный блог, и пост интересный, но он утверждает некоторые способы работы, которые устарели и уже неверны в V2. Он использует System.Random для создания случайных чисел, потому чтона тот момент, не было командлета для получения случайных чисел. Get-Random – это командлет в V2, который может получать не только случайные числа, но и уникальные случайные числа из диапазона
Моя версия для CTP3 слева, версия Тобиаса для V1 справа:
Моя версия для CTP3 |
Версия Тобиаса для V1: |
function Get-RandomNumbers($minimum = 1, $maximum = 49, $number = 20) { #.Synopsis # Получает наборы уникальных случайных чисел #.Description # Получает наборы уникальных случайных чисел между minimum и maximum #.Parameter number # Требуемое количество уникальных чисел #.Parameter minimum # Наименьшее из случайных чисел #.Parameter maximum # Наибольшее из случайных чисел #.Link # Get-Random #.Example # Get-RandomNumbers 10 1 100 $minimum..$maximum | Get-Random -Count $number | Sort-Object } |
function Get-RandomNumbers($minimum = 1, $maximum = 49, $number = 20) { $random = New-Object System.Random $result = @() do { $randomnumber = $random.Next($minimum,$maximum) if ($result -notcontains $randomnumber) { $result += $randomnumber } } while ($result.count -lt $number) $result = $result | Sort-Object $result } |
Я показываю Get-Random для работы с набором чисел. Вы можете легко использовать то же самое для выбора списка слов. Это подтверждается следующим примером с использованием конвейера, которые возвращает 5 случайных глаголов:
Get-Command -type Cmdlet |
Group-Object Verb |
Foreach-Object { $_.Name } |
Get-Random -count 5
Разве CTP3 не прикольный?
Надеюсь, это поможет,
Джеймс Брундаж (James Brundage) [MSFT]
Перевод: Илья Лушников