PowerShell:
การสร้างตัวเลขสุ่ม
วิธีการ:
PowerShell มีวิธีการในการสร้างตัวเลขสุ่มที่ตรงไปตรงมาโดยใช้คำสั่ง Get-Random
cmdlet คำสั่งนี้สามารถผลิตตัวเลขสุ่มภายในช่วงที่กำหนดได้หรือภายในช่วงที่ระบุ
# สร้างตัวเลขสุ่มระหว่าง 0 และ Int32.MaxValue
$randomNumber = Get-Random
Write-Output $randomNumber
เพื่อระบุช่วง, ใช้พารามิเตอร์ -Minimum
และ -Maximum
:
# สร้างตัวเลขสุ่มระหว่าง 1 และ 100
$randomNumber = Get-Random -Minimum 1 -Maximum 101
Write-Output $randomNumber
สำหรับการควบคุมมากขึ้น, คุณสามารถสร้างวัตถุของคลาส System.Random
:
# ใช้ System.Random สำหรับลำดับของตัวเลข
$rand = New-Object System.Random
foreach ($i in 1..5) {
$randomNumber = $rand.Next(1, 101)
Write-Output $randomNumber
}
หากคุณต้องการเลือกสุ่มจากอาร์เรย์หรือชุดข้อมูล, Get-Random
สามารถเลือกรายการโดยตรง:
# เลือกสุ่มจากอาร์เรย์
$array = 1..10
$randomItem = Get-Random -InputObject $array
Write-Output $randomItem
ศึกษาลึก
คำสั่ง Get-Random
cmdlet ใน PowerShell ใช้คลาส .NET System.Random
เป็นพื้นฐานในการสร้างตัวเลขสุ่มข้างเคียง นี่เป็น “ข้างเคียง” เพราะว่าใช้อัลกอริทึมในการผลิตลำดับของตัวเลขที่ดูเหมือนจะเป็นสุ่มเท่านั้น สำหรับการใช้งานทั่วไป ระดับความสุ่มนี้มีเพียงพอ อย่างไรก็ตาม, สำหรับใช้งานที่ต้องการความปลอดภัยทางการเข้ารหัส System.Random
ไม่เหมาะสมเนื่องจากธรรมชาติที่สามารถทายได้
PowerShell และ .NET มี System.Security.Cryptography.RNGCryptoServiceProvider
สำหรับความสุ่มที่ปลอดภัยทางการเข้ารหัสซึ่งเหมาะสมกว่าสำหรับการสร้างกุญแจการเข้ารหัสหรือการดำเนินการที่เกี่ยวข้องกับความปลอดภัยอื่นๆ:
# ตัวเลขสุ่มที่ปลอดภัยทางการเข้ารหัส
$rng = [System.Security.Cryptography.RNGCryptoServiceProvider]::new()
$bytes = New-Object byte[] 4
$rng.GetBytes($bytes)
$randomNumber = [BitConverter]::ToInt32($bytes, 0)
Write-Output $randomNumber
ในขณะที่ Get-Random
และ System.Random
ตอบสนองความต้องการของการสุ่มในการเขียนสคริปต์และตรรกะการใช้งานได้อย่างกว้างขวาง, มันสำคัญที่จะเลือกเครื่องมือที่เหมาะสมสำหรับงาน, โดยเฉพาะในการใช้งานที่เน้นความปลอดภัย ที่ความสามารถในการทายล่วงหน้าอาจเป็นจุดอ่อน