PowerShell:
Generera slumptal

Hur man gör:

PowerShell erbjuder en enkel metod för att generera slumpmässiga tal med hjälp av cmdleten Get-Random. Denna cmdlet kan producera slumpmässiga tal inom ett standardintervall eller ett angivet intervall.

# Generera ett slumpmässigt tal mellan 0 och Int32.MaxValue
$randomNumber = Get-Random
Write-Output $randomNumber

För att specificera ett intervall, använd parametrarna -Minimum och -Maximum:

# Generera ett slumpmässigt tal mellan 1 och 100
$randomNumber = Get-Random -Minimum 1 -Maximum 101
Write-Output $randomNumber

För mer kontroll kan du instansiera ett objekt av klassen System.Random:

# Använda System.Random för en sekvens av tal
$rand = New-Object System.Random
foreach ($i in 1..5) {
    $randomNumber = $rand.Next(1, 101)
    Write-Output $randomNumber
}

Om du behöver ett slumpmässigt urval från en array eller samling kan Get-Random direkt välja ett objekt:

# Slumpmässigt urval från en array
$array = 1..10
$randomItem = Get-Random -InputObject $array
Write-Output $randomItem

Fördjupning

Cmdleten Get-Random i PowerShell utnyttjar .NET-klassen System.Random bakom kulisserna för att generera pseudoslumpmässiga tal. Dessa är “pseudo” eftersom de använder algoritmer för att producera sekvenser av tal som bara verkar slumpmässiga. För de flesta applikationer är denna nivå av slumpmässighet tillräcklig. Dock, för användningsfall som kräver kryptografisk säkerhet, är System.Random inte lämplig på grund av sin förutsägbara natur.

PowerShell och .NET erbjuder System.Security.Cryptography.RNGCryptoServiceProvider för kryptografisk slumpmässighet, vilket är mer lämpligt för att generera krypteringsnycklar eller andra säkerhetskänsliga operationer:

# Kryptografiskt säkra slumpmässiga tal
$rng = [System.Security.Cryptography.RNGCryptoServiceProvider]::new()
$bytes = New-Object byte[] 4
$rng.GetBytes($bytes)
$randomNumber = [BitConverter]::ToInt32($bytes, 0)
Write-Output $randomNumber

Även om Get-Random och System.Random tillfredsställer ett brett spektrum av behov för slumpmässighet i skriptning och applikationslogik, är det avgörande att välja rätt verktyg för jobbet, särskilt i säkerhetscentrerade applikationer där förutsägbarhet kan utgöra en sårbarhet.