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 $randomNumber
Jos 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 $randomNumber
Lisä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 $randomItem
Syvä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 $randomNumber
Vaikka 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.