Apakah mungkin untuk memiliki variabel yang mengambil nomor acak dari tiga angka yang ditentukan sebelumnya?
Mencicipi:
var= 10 or 100 or 1000
shell-script
variable
random
Espen Larsen
sumber
sumber
Jawaban:
Gunakan array untuk menyimpan nilai dan memilih di antara mereka menggunakan variabel bawaan
$RANDOM
. Sebagai contoh,Kualitas keacakan tidak akan menjadi yang terbaik (baca byte dari
/dev/urandom
untuk itu), tetapi harus lebih dari cukup untuk sebuah skrip.Catatan 1: Sebagai orang telah diamati di komentar, bukannya menginisialisasi elemen array secara individual satu kaleng saja menggunakan litteral berbagai:
x=(10 100 1000)
.Catatan 2: Alih-alih mengkode jumlah elemen dalam array, elemen radom dapat diekstraksi dengan
${x[$RANDOM%${#x[@]}]}
.sumber
x=(10 100 1000)
membuat array dari literal di bash, ini akan lebih mudah dibaca dan lebih idiomatisx[0]=10 # This sets the first value of x to ten. Ten is the number of fingers that humans have (excepting birth defects or mutilation). It is also the sum of 9 and 1, or product of 5 and 2. Ten is not prime. A traditional Christmas gift is ten lords a-leaping.
sesuatu seperti itu?Jika Anda menggunakan bash (atau zsh atau ksh93 ) Anda bisa melakukannya:
atau
untuk menetapkannya ke var
sumber
Anda juga dapat menggunakan
shuf
utilitas GNU coreutils :Menggunakan
RANDOM
sesuai jawaban lainnya hampir pasti lebih cepat.sumber
sumber
Inilah cara yang agak samar:
Ini akan menetapkan nilai acak
$var
sesuai kebutuhan. Theprintf
format string adalah1%0Nd
- ini menyebabkan0
yang akan dicetak denganN
nol terkemuka, di manaN
akan menjadi integer acak dalam interval[1,3]
.sumber