Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Тобиас Вельтнер (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]
Перевод: Илья Лушников