PowerShell:
Генерація випадкових чисел
Як:
PowerShell пропонує простий підхід для генерації випадкових чисел за допомогою cmdlet Get-Random
. Цей cmdlet може створювати випадкові числа в межах діапазону за замовчуванням або вказаному діапазоні.
# Генерація випадкового числа між 0 та Int32.MaxValue
$randomNumber = Get-Random
Write-Output $randomNumber
Щоб вказати діапазон, використовуйте параметри -Minimum
та -Maximum
:
# Генерація випадкового числа між 1 та 100
$randomNumber = Get-Random -Minimum 1 -Maximum 101
Write-Output $randomNumber
Для більшого контролю, ви можете ініціалізувати об’єкт класу System.Random
:
# Використання System.Random для послідовності чисел
$rand = New-Object System.Random
foreach ($i in 1..5) {
$randomNumber = $rand.Next(1, 101)
Write-Output $randomNumber
}
Якщо вам потрібен випадковий вибір з масиву або колекції, Get-Random
може безпосередньо вибрати елемент:
# Випадковий вибір з масиву
$array = 1..10
$randomItem = Get-Random -InputObject $array
Write-Output $randomItem
Поглиблений аналіз
Cmdlet Get-Random
у PowerShell використовує клас .NET System.Random
для генерації псевдовипадкових чисел. Вони “псевдо”, оскільки використовують алгоритми для створення послідовностей чисел, які лише здаються випадковими. Для більшості застосувань цей рівень випадковості є достатнім. Однак, для сценаріїв, які вимагають криптографічної безпеки, System.Random
не підходить через його передбачуваний характер.
PowerShell та .NET пропонують System.Security.Cryptography.RNGCryptoServiceProvider
для криптографічної випадковості, який більше підходить для генерації ключів шифрування або інших операцій, чутливих до безпеки:
# Криптографічно безпечні випадкові числа
$rng = [System.Security.Cryptography.RNGCryptoServiceProvider]::new()
$bytes = New-Object byte[] 4
$rng.GetBytes($bytes)
$randomNumber = [BitConverter]::ToInt32($bytes, 0)
Write-Output $randomNumber
Оскільки Get-Random
та System.Random
задовольняють широкий набір потреб для випадковості в сценаріях та логіці додатків, важливо обрати правильний інструмент для завдання, особливо в застосуваннях зорієнтованих на безпеку, де передбачуваність може становити вразливість.