Генерація випадкових чисел

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