Saya ingin menghasilkan, katakanlah 10 angka acak antara 100 dan 200 (keduanya termasuk). Bagaimana saya membuatnya dengan rand?
command-line
ignacio caviedes
sumber
sumber
rand
? TheRANDOM
variabel?/dev/random
?/dev/urandom
?rand
atau inirand
?Jawaban:
Jika Anda berarti
rand
dari pararand
paket (sebagai lawan satu dari OpenSSL), tidak mendukung batas bawah, hanya bagian atas terikat. Apa yang dapat Anda lakukan adalah trik shift-lower-bound-to-zero-then-add-lower-bound:-N
adalah jumlah angka acak yang Anda butuhkan-M
akan menjadi batas atas darirand
output angka , jadi ( maks - min = 100)-e -d '\n'
menyetel pembatas ke baris baru. Itu untuk kenyamanan pemrosesan olehawk
.The
awk
kode kemudian mengambil setiap baris dan menambahkan 100 untuk itu.sumber
Menggunakan
python
:Keluaran:
Di sini saya telah menggunakan
random
modulpython
untuk menghasilkan 10 (range(10)
) bilangan bulat acak antara 100 dan 200 (termasuk) (random.randint(100, 200)
).sumber
Inilah cara Perl:
Anda juga dapat menggunakan
/dev/urandom
(diadaptasi dari sini ):sumber
Anda juga dapat menggunakan
awk
:sumber
Dengan
shuf
dari GNU coreutils:sumber
Anda bisa menggunakannya
$RANDOM
.sumber
Versi bash
Tidak ada yang spektakuler - emulasi sederhana untuk loop dengan
i
counter danwhile
. Rentang diatur menggunakanif . . . else . . .fi
struktur. Catatan: prompt saya adalah direktori yang berfungsi terlebih dahulu, kemudian area input, jadi jangan bingung dengan apa yang Anda lihatbashRadom.sh
:Versi C
Ini adalah kode yang saya gunakan saat mengambil kelas C di universitas saya. Edit kecil yang saya tambahkan agar sesuai dengan pertanyaan ini adalah penggunaan argumen baris perintah (alih-alih nilai hardcoding ke sumber)
randfunc.c
:sumber
random
perpustakaan: stackoverflow.com/a/19728404/2072269 , stackoverflow.com/a/19666713/2072269