สามารถสร้างเลขสุ่มที่พรอมต์ bash ได้ง่าย แล้วนำไปกำหนดให้ตัวแปร ใช้ได้ทั้งเขียนสคริปต์ เล่นเกม TRPG (เช่น D&D) หรือตรวจสอบความปลอดภัยเบื้องต้น (แต่ผู้โจมตีเก่งอาจ繞ผ่านได้ ยังใช้สร้างรหัสผ่าน/โค้ดได้)
มีหลายวิธี ไม่ใช่วิธีไหนก็เหมาะทุกสถานการณ์ เราทดสอบทุกวิธีแล้ว ต้องใช้เทอร์มินัล: กด Ctrl+Alt+T หรือ Super+T เปิดเทอร์มินัล หรือค้นหา "terminal" ใน Dash/เมนู หรือ Ctrl+Alt+F1-F6 เข้าคอนโซลเสมือน
วิธีที่ 1: สุ่มไบต์เต็ม (1-256)
รันคำสั่ง:
od -An -N1 -tu1 /dev/urandom
อย่าใช้ /dev/random เพราะอาจกิน entropy ของโปรแกรมอื่น เพื่อกำหนดให้ตัวแปร ranNum:
ranNum=$(($(od -An -N1 -tu1 /dev/urandom)))
ranNum จะได้ค่า 1-256 ทำงานได้ทั้งบรรทัดคำสั่งและในสคริปต์ เปลี่ยนชื่อตัวแปรได้ตามต้องการ
วิธีที่ 2: สุ่ม 1 ถึงค่าที่กำหนด
รัน echo $[RANDOM%40+1] ได้เลขสุ่ม 1-40 แทนที่ 40 ด้วยค่าใดก็ได้ (ขีดจำกัดขึ้นกับสถาปัตยกรรมเครื่อง) ตัวอย่าง สุ่ม 1-10:
ranNum=$[RANDOM%10+1]
ค่าสูงสุดรวมอยู่ในผลลัพธ์ (10 อาจออกมา) หากอยากลดลง ให้เปลี่ยนค่าตรงๆ (เช่น 9) ไม่ต้องคิด -1 แบบ C/C++ เพราะจะให้ผลผิดปกติ
วิธีที่ 3: สุ่มบิตเดี่ยว (0 หรือ 1)
ต้องการตัวแปรเป็น 0 หรือ 1 ใช้:
ranNum=$(($(od -An -N1 -i /dev/urandom) % 2))
ranNum จะเป็น 1 หรือ 0 ขึ้นกับเลขคู่/คี่จาก /dev/urandom ใช้ได้กับ logic yes/no แบบง่าย
ถ้าต้องการสุ่มมากกว่านั้น ใช้ /proc/sys/kernel/random:
ranNum=$((0x$(cut -c1-1 /proc/sys/kernel/random/uuid) % 2))
ยังคงได้แค่ 0 หรือ 1 เหมาะกับ logic ไบนารี ใช้ในสคริปต์ bash ได้ วิธีนี้อาจดีกว่าเมื่อวิธีแรกล้มเหลว
วิธีที่ 4: เขียนสคริปต์ bash สำหรับสุ่มเลข
สร้างสคริปต์ไว้ใช้งานง่าย ใช้ bash มาตรฐาน ทำงานได้กับ Linux ทุกตัวและ BSD หลายตัว แนะนำ cd ~/.local/bin ก่อน เพื่อรันได้จากทุกที่
พิมพ์ nano random หรือ vi random (ตั้งชื่ออื่นได้) ใส่โค้ด:
#!/bin/bash
ranNum=$(($RANDOM % 2))
echo $ranNum
กด Ctrl+O บันทึก (nano) Ctrl+X ออก กลับมาที่พรอมต์ รัน chmod +x random ทำให้รันได้ เปลี่ยนบรรทัดกลางเพื่อควบคุมช่วงเลข ตัวอย่าง สุ่ม 1-50:
#!/bin/bash
ranNum=$[RANDOM%50+1]
echo $ranNum
ตอนนี้พิมพ์ random ที่ไหนก็ได้ จะได้เลขสุ่มตามที่ตั้งไว้