Kadang kala, kita memprogramkan beberapa skrip dalam Bash …. dan kita perlu (untuk beberapa sebab) untuk menghasilkan beberapa nombor rawak.
Untuk itu, anda dapat memprogram keseluruhan aplikasi (atau fungsi ...) ya, tetapi ... peliknya, sistem kami telah melakukannya 😀
Di terminal, taipkan yang berikut dan tekan [Masukkan]:
bergema $ RANDOM
... nombor akan muncul, mereka melakukan perkara yang sama sekali lagi dan nombor lain muncul, dan seterusnya 🙂
Apa yang dilakukannya ialah menunjukkan nombor rawak (mana-mana) antara 0 dan 32768 (bilangan bulat, iaitu tanpa koma).
Sekiranya anda memerlukannya sebagai nombor rawak, tetapi antara 0 dan ... katakanlah 100, anda boleh meletakkan had itu 😀
gema $ (($ RANDOM% 100))
Sama, contoh lain ... jika anda mahukan angka antara 0 dan 29 ia adalah:
gema $ (($ RANDOM% 29))
Adakah difahami tidak? 😀
Sekiranya mereka akan menggunakannya dalam skrip bash yang mereka lakukan, untuk menetapkan nilai yang dihasilkan (nombor rawak) kepada pemboleh ubah itu adalah:
VARIABLE = `gema $ (($ RANDOM))`
Dan ini dia, saya tidak tahu tentang anda ... tetapi saya tahu bahawa ia akan berguna bagi saya pada suatu ketika hahaha.
salam
Saya telah mengujinya dan hanya mengembalikan nombor 4 digit, bagaimana saya boleh membuatnya lebih besar?
Petua yang sangat menarik, terima kasih.
Mengembalikan nombor antara 0 dan 32768, saya tidak dapat memperoleh nombor yang lebih besar.
dan bolehkah ia menghasilkan eksadekim ????
VARIABLE = `gema $ (($ RANDOM))`
Itu berfungsi tetapi tidak optimum, dengan alasan mudah bahawa RANDOM adalah pemboleh ubah dan anda boleh melakukan:
pemboleh ubah = $ RANDOM
dan itu sahaja! jangan jalankan gema di terminal aprte (yang anda lakukan)
Ya, jelas ia dapat dicapai seperti ini ... satu-satunya perbezaan adalah kemudian, untuk melihat nombor yang diambil oleh pemboleh ubah (kerana pengguna bukan peneka), perlu melakukan gema .... dan pada akhirnya, apa yang saya lakukan di sini hanyalah melakukan gema (supaya pengguna melihat nombor apa yang diambil) dari awal.
Adakah saya membuat diri saya difahami? 🙂
Cara lain untuk menghasilkan nombor rawak, walaupun kali ini adalah perintah ini:
tarikh "+% N" | potong -c 9
Itu akan memberi kita tarikh dalam nanodetik dengan 9 digit. Sekiranya kita mahukan satu angka, maka anda meletakkan "cut -c 9" (angka terakhir selalu lebih rawak kerana itu adalah nombor terkecil). Sekiranya kita mahukan 2 angka maka kita meletakkan "cut - c 8,9". Sekiranya kita mahukan tiga angka maka "potong -c 7-9" (kita mula menggunakan tanda hubung).
Satu-satunya perkara yang buruk adalah jika kita ingin mendapatkan banyak nombor rawak berturut-turut dalam masa yang singkat, kerana ini adalah nombor rawak berdasarkan tarikh dengan waktunya. Iaitu, jika kita membuat perintah dengan perintah itu, kita dapat melihat bahawa:
$ untuk i dalam `seq 1 1 500`; buat tarikh "+% N"; selesai
...
...
...
308311367
310807595
313273093
315725181
318186139
320671403
323360117
325733353
328335462
330694870
333259893
335858999
338375622
340798446
...
...
...
Saya fikir ia jelas bukan? Angka-angka di sebelah kiri lebih mirip dalam jangka waktu yang singkat, tentu saja, dan angka di sebelah kanan lebih "rawak".
mmm…. Saya menyukainya, saya mempunyai skrip mini, ia dilukis untuk menghasilkan nombor rawak, terima kasih.
Ia berfungsi .. dan banyak ..
terutamanya jika anda memprogramkan antara muka dengan kata laluan, keselamatan, dll, dan lain-lain, haha.
Aprote yang sangat baik.
Hei.
Sudah tentu, tahniah di laman web yang sangat baik ini, yang telah lama saya ikuti.
Dan kedua, buat catatan kecil untuk entri ini:
Apabila had dilakukan seperti ini:
gema $ (($ RANDOM% 10))
Sebenarnya, apa yang anda pesan kepada jurubahasa adalah bahawa nombor yang anda hasilkan selalu merupakan modulus% (baki bahagian) dari nombor berikutnya, dalam contoh ini, 10.
Sebilangan nombor yang dibahagi dengan 10 tidak akan memberikan baki sesuatu yang lebih besar daripada pembahagi itu sendiri.
Masalahnya ialah ia tidak akan memberikan nombor yang sama, kerana pembahagian dengan 0 tidak logik bagi jurubahasa.
Ini bermaksud bahawa echo $ (($ RANDOM% 10) akan memberikan hasil antara 0 dan 9, tetapi tidak pernah 10.
Penyelesaian untuk konflik ini adalah dengan menambahkan satu ke had anda, sehingga nombor yang sama berada dalam julat rawak.
gema $ (($ RANDOM% 11))
Ini akan memberikan hasil antara 0 dan 10.
Sesuatu ucapan.
Halo, saya baru sahaja membina sesuatu seperti ini, tetapi saya menghadapi masalah.
Saya ingin membuat 6 nombor berbeza dari 00 hingga 45 tetapi tidak mengulanginya.
gema $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $($RANDOM%46)) $(($RANDOM%46)) $(($ RANDOM% 46))
Cth: 17 33 16 36 45 27