Computer >> Hướng Dẫn Máy Tính >  >> Xử Lý Sự Cố >> Linux

Tạo Số Ngẫu Nhiên Trong Bash: Hướng Dẫn Nhanh

Bash cho phép tạo số ngẫu nhiên dễ dàng — hữu ích cho script, game bàn (D&D), kiểm tra bảo mật cơ bản, hoặc sinh mật mã. Dưới đây là các phương pháp phổ biến, đã được kiểm tra.

Mở Terminal

Ctrl+Alt+T hoặc Super+T, hoặc tìm "Terminal" trong menu. Cũng có thể dùng virtual console: Ctrl+Alt+F1..F6.

Phương Pháp 1: Lấy Byte Ngẫu Nhiên Từ /dev/urandom (1–256)

od -An -N1 -tu1 /dev/urandom
  • -An: không in địa chỉ offset.
  • -N1: đọc 1 byte.
  • -tu1: hiển thị unsigned 1-byte integer.

Khuyên dùng /dev/urandom thay vì /dev/random — tránh cạn kiệt entropy pool ảnh hưởng tiến trình khác.

Gán vào biến:

ranNum=$(($(od -An -N1 -tu1 /dev/urandom)))

Biến ranNum giờ chứa số 1–256. Thay tên biến tùy ý.

Phương Pháp 2: Biến $RANDOM Nội Tế Bash (1–N)

In ra màn hình (1–40):

echo $[RANDOM%40+1]

Gán biến (1–10):

ranNum=$[RANDOM%10+1]
  • Thay 10 bằng giới hạn trên mong muốn (inclusive).
  • Không dùng toán tử -1 kiểu C/C++ — sẽ cho kết quả sai.
  • Giới hạn thực tế phụ thuộc kiến trúc máy (thường 32767).

Phương Pháp 3: Chọn Bit Ngẫu Nhiên (0 hoặc 1)

Cách 1 (từ /dev/urandom):

ranNum=$(($(od -An -N1 -i /dev/urandom) % 2))

Cách 2 (từ kernel UUID — hơi "ngẫu nhiên" hơn):

ranNum=$((0x$(cut -c1-1 /proc/sys/kernel/random/uuid) % 2))

Cả hai chỉ trả về 0 hoặc 1 — phù hợp logic yes/no, boolean.

Phương Pháp 4: Tạo Script Tái Sử Dụng

  1. cd ~/.local/bin (tạo thư mục nếu chưa có, thêm vào PATH).
  2. Tạo file: nano random (hoặc vi random).
  3. Nội dung (ví dụ trả về 0/1):
#!/bin/bash
ranNum=$(($RANDOM % 2))
echo $ranNum
  1. Lưu (Ctrl+O, Enter), thoát (Ctrl+X).
  2. Cấp quyền thực thi: chmod +x random.

Bây giờ gõ random bất cứ lúc nào để lấy số ngẫu nhiên.

Để thay đổi phạm vi (ví dụ 1–50), sửa dòng giữa:

ranNum=$[RANDOM%50+1]

Hoặc dùng bất kỳ phương pháp nào ở trên.

Lưu Ý Bảo Mật

Các phương pháp này không an toàn mật mã học (non-cryptographic). Đừng dùng cho khóa mã hóa, token bảo mật quan trọng. Dùng /dev/urandom hoặc công cụ chuyên dụng (openssl, gpg) cho mục đích bảo mật thực sự.