Generering av tilfeldige tall

PowerShell:
Generering av tilfeldige tall

Hvordan:

PowerShell tilbyr en enkel tilnærming for å generere tilfeldige tall ved bruk av Get-Random cmdleten. Denne cmdleten kan produsere tilfeldige tall innenfor et standardområde eller et spesifisert område.

# Generer et tilfeldig tall mellom 0 og Int32.MaxValue
$randomNumber = Get-Random
Write-Output $randomNumber

For å spesifisere et område, bruk -Minimum og -Maximum parameterne:

# Generer et tilfeldig tall mellom 1 og 100
$randomNumber = Get-Random -Minimum 1 -Maximum 101
Write-Output $randomNumber

For mer kontroll, kan du instansiere et objekt av System.Random klassen:

# Bruk System.Random for en sekvens av tall
$rand = New-Object System.Random
foreach ($i in 1..5) {
    $randomNumber = $rand.Next(1, 101)
    Write-Output $randomNumber
}

Hvis du trenger et tilfeldig utvalg fra en tabell eller samling, kan Get-Random direkte velge et element:

# Tilfeldig utvalg fra en tabell
$array = 1..10
$randomItem = Get-Random -InputObject $array
Write-Output $randomItem

Fordypning

Get-Random cmdleten i PowerShell bruker .NET-klassen System.Random under panseret for å generere pseudotilfeldige tall. Disse er “pseudo” fordi de bruker algoritmer til å produsere sekvenser av tall som bare ser tilfeldige ut. For de fleste applikasjoner er dette nivået av tilfeldighet tilstrekkelig. Imidlertid, for brukstilfeller som krever kryptografisk sikkerhet, er ikke System.Random passende på grunn av sin forutsigbare natur.

PowerShell og .NET tilbyr System.Security.Cryptography.RNGCryptoServiceProvider for kryptografisk tilfeldighet, som er mer passende for å generere krypteringsnøkler eller andre sikkerhetsfølsomme operasjoner:

# Kryptografisk sikre tilfeldige tall
$rng = [System.Security.Cryptography.RNGCryptoServiceProvider]::new()
$bytes = New-Object byte[] 4
$rng.GetBytes($bytes)
$randomNumber = [BitConverter]::ToInt32($bytes, 0)
Write-Output $randomNumber

Mens Get-Random og System.Random tilfredsstiller et bredt sett med behov for tilfeldighet i scripting og applikasjonslogikk, er det essensielt å velge riktig verktøy for jobben, spesielt i sikkerhetsfokuserte applikasjoner der forutsigbarhet kan presentere en sårbarhet.