Udostępnij za pośrednictwem


Мечтая о 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]

 

Перевод: Илья Лушников