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 задовольняють широкий набір потреб для випадковості в сценаріях та логіці додатків, важливо обрати правильний інструмент для завдання, особливо в застосуваннях зорієнтованих на безпеку, де передбачуваність може становити вразливість.