Saya mencoba untuk mencetak n
kata huruf acak , di mana saya masukan n
dari baris perintah itu sendiri, tetapi untuk beberapa alasan skrip saya memberi saya jawaban yang sama setiap kali ketika menggunakan nilai yang sama untuk n
.
#!/bin/bash
num=$1
egrep "^.{$num}$" /usr/share/dict/words | head -n $RANDOM| tail -n 1
Saya memanggil skrip saya seperti:
$ bash var3.sh 5
étude # always the same output when using 5
$ bash var3.sh 3
zoo # always the same output when using 3
di mana var3.sh
nama skrip saya dan 5 adalah panjang kata yang ingin saya cetak secara acak.
Bagaimana cara saya mencetak kata yang benar-benar acak?
shuf
atau sort -R
seperti yang disarankan dalam jawaban. Anda juga dapat menggunakan $RANDOM
, tetapi dengan cara yang lebih maju. Semua alat ini menghasilkan hasil yang dapat diprediksi (mereka tidak benar-benar acak), tetapi mereka cepat dan cukup baik untuk banyak tujuan.
$RANDOM
kemungkinan besar lebih besar daripada jumlah kata n- newsletter untuk sebagian besar nilai n (95,7% dari waktu untuk n = 3 untuk saya).