PowerShell:
Sinh số ngẫu nhiên
Cách thực hiện:
PowerShell cung cấp một cách thẳng thắn để tạo số ngẫu nhiên bằng cách sử dụng cmdlet Get-Random. Cmdlet này có thể sản xuất ra số ngẫu nhiên trong phạm vi mặc định hoặc một phạm vi được chỉ định.
# Tạo một số ngẫu nhiên giữa 0 và Int32.MaxValue
$randomNumber = Get-Random
Write-Output $randomNumberĐể chỉ định một phạm vi, sử dụng các tham số -Minimum và -Maximum:
# Tạo một số ngẫu nhiên giữa 1 và 100
$randomNumber = Get-Random -Minimum 1 -Maximum 101
Write-Output $randomNumberĐể kiểm soát nhiều hơn, bạn có thể tạo một đối tượng của lớp System.Random:
# Sử dụng System.Random cho một chuỗi các số
$rand = New-Object System.Random
foreach ($i in 1..5) {
$randomNumber = $rand.Next(1, 101)
Write-Output $randomNumber
}Nếu bạn cần một lựa chọn ngẫu nhiên từ một mảng hoặc bộ sưu tập, Get-Random có thể trực tiếp chọn một mục:
# Lựa chọn ngẫu nhiên từ một mảng
$array = 1..10
$randomItem = Get-Random -InputObject $array
Write-Output $randomItemSâu hơn
Cmdlet Get-Random trong PowerShell sử dụng lớp .NET System.Random bên dưới để tạo ra các số giả ngẫu nhiên. Chúng được gọi là “giả” vì chúng sử dụng các thuật toán để sản xuất các chuỗi số chỉ trông như ngẫu nhiên. Đối với hầu hết các ứng dụng, mức độ ngẫu nhiên này là đủ. Tuy nhiên, đối với các trường hợp sử dụng cần đến bảo mật mật mã học, System.Random không phù hợp do bản chất có thể dự đoán của nó.
PowerShell và .NET cung cấp System.Security.Cryptography.RNGCryptoServiceProvider cho tính ngẫu nhiên mật mã học, phù hợp hơn cho việc tạo khóa mã hóa hoặc các hoạt động nhạy cảm với bảo mật khác:
# Số ngẫu nhiên bảo mật mật mã học
$rng = [System.Security.Cryptography.RNGCryptoServiceProvider]::new()
$bytes = New-Object byte[] 4
$rng.GetBytes($bytes)
$randomNumber = [BitConverter]::ToInt32($bytes, 0)
Write-Output $randomNumberTrong khi Get-Random và System.Random đáp ứng một tập hợp rộng lớn các nhu cầu về ngẫu nhiên trong viết script và lô-gíc ứng dụng, việc chọn công cụ đúng cho công việc là thiết yếu, đặc biệt là trong các ứng dụng tập trung vào bảo mật nơi sự dự đoán có thể là một lỗ hổng.