Tôi đang cố gắng in một n
từ chữ ngẫu nhiên , trong đó tôi nhập n
từ chính dòng lệnh, nhưng vì một số lý do, tập lệnh của tôi sẽ cho tôi cùng một câu trả lời mỗi khi sử dụng cùng một giá trị n
.
#!/bin/bash
num=$1
egrep "^.{$num}$" /usr/share/dict/words | head -n $RANDOM| tail -n 1
Tôi đang gọi kịch bản của mình như sau:
$ bash var3.sh 5
étude # always the same output when using 5
$ bash var3.sh 3
zoo # always the same output when using 3
trong đó var3.sh
tên của kịch bản của tôi và 5 là độ dài của từ tôi muốn in ngẫu nhiên.
Làm thế nào để tôi có được nó để in một từ thực sự ngẫu nhiên?
shuf
hoặc sort -R
như được đề xuất trong các câu trả lời. Bạn cũng có thể sử dụng $RANDOM
, nhưng theo một cách tiên tiến hơn. Tất cả các công cụ này tạo ra kết quả có thể dự đoán (chúng không thực sự ngẫu nhiên), nhưng chúng nhanh và đủ tốt cho nhiều mục đích.
$RANDOM
khá có khả năng lớn hơn số lượng từ n -letter cho hầu hết các giá trị của n (95,7% thời gian cho n = 3 đối với tôi).