PowerShell:
Satunnaislukujen generointi
Kuinka:
PowerShell tarjoaa suoraviivaisen lähestymistavan satunnaislukujen tuottamiseen käyttämällä Get-Random-cmdlet-komentoa. Tämä cmdlet voi tuottaa satunnaislukuja joko oletusalueella tai määritellyllä välillä.
# Tuota satunnaisluku väliltä 0 ja Int32.MaxValue
$randomNumber = Get-Random
Write-Output $randomNumberJos haluat määrittää alueen, käytä -Minimum ja -Maximum parametreja:
# Tuota satunnaisluku väliltä 1 ja 100
$randomNumber = Get-Random -Minimum 1 -Maximum 101
Write-Output $randomNumberLisäkontrollin saavuttamiseksi voit luoda ilmentymän System.Random-luokasta:
# Käyttäen System.Randomia numerosarjan tuottamiseen
$rand = New-Object System.Random
foreach ($i in 1..5) {
$randomNumber = $rand.Next(1, 101)
Write-Output $randomNumber
}Jos tarvitset satunnaista valintaa taulukosta tai kokoelmasta, Get-Random voi suoraan valita kohteen:
# Satunnainen valinta taulukosta
$array = 1..10
$randomItem = Get-Random -InputObject $array
Write-Output $randomItemSyväsukellus
Get-Random-cmdlet PowerShellissä hyödyntää .NET-luokkaa System.Random pseudosatunnaislukujen tuottamiseen. Nämä ovat “pseudo”, koska ne käyttävät algoritmeja numerosekvenssien tuottamiseen, jotka vain vaikuttavat satunnaisilta. Useimmissa sovelluksissa tämä satunnaisuuden taso on riittävä. Kuitenkin käyttötarkoituksissa, jotka vaativat kryptografista turvallisuutta, System.Random ei ole sopiva sen ennustettavuuden vuoksi.
PowerShell ja .NET tarjoavat System.Security.Cryptography.RNGCryptoServiceProvider-luokan kryptografiseen satunnaisuuteen, joka soveltuu paremmin salausavainten tuottamiseen tai muihin turvallisuusherkkiin toimenpiteisiin:
# Kryptografisesti turvalliset satunnaisluvut
$rng = [System.Security.Cryptography.RNGCryptoServiceProvider]::new()
$bytes = New-Object byte[] 4
$rng.GetBytes($bytes)
$randomNumber = [BitConverter]::ToInt32($bytes, 0)
Write-Output $randomNumberVaikka Get-Random ja System.Random tyydyttävät laajan tarpeiden kirjon satunnaisuudessa skriptauksessa ja sovelluslogiikassa, on olennaista valita oikea työkalu tehtävään, erityisesti turvallisuuskeskeisissä sovelluksissa, joissa ennustettavuus voi muodostaa haavoittuvuuden.