การสร้างตัวเลขสุ่ม

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 ตอบสนองความต้องการของการสุ่มในการเขียนสคริปต์และตรรกะการใช้งานได้อย่างกว้างขวาง, มันสำคัญที่จะเลือกเครื่องมือที่เหมาะสมสำหรับงาน, โดยเฉพาะในการใช้งานที่เน้นความปลอดภัย ที่ความสามารถในการทายล่วงหน้าอาจเป็นจุดอ่อน