Bagaimana cara menggunakan acak dalam skrip BATCH?
windows
random
windows-xp
batch-file
IAdapter
sumber
sumber
Jawaban:
%RANDOM%
memberi Anda nomor acak antara 0 dan 32767.Menggunakan ekspresi seperti
SET /A test=%RANDOM% * 100 / 32768 + 1
, Anda dapat mengubah rentang menjadi apa pun yang Anda suka (di sini kisarannya adalah [1… 100] bukan [0… 32767]).sumber
SETLOCAL ENABLEDELAYEDEXPANSION
dan menggunakan!RANDOM!
alih-alih%RANDOM%
, seperti yang diposting Eugene.%RANDOM% * (%maxval% - %minval% + 1) / 32768 + %minval%
; atur sajaminval
danmaxval
ke nilai yang sesuai terlebih dahulu.Anda dapat mengontrol rentang nomor dengan:
- akan menghasilkan angka antara 0 ~ 99.
Yang ini:
- akan menghasilkan angka antara 1 ~ 100.
sumber
%random% %%100
bukan sintaks ajaib tetapi sebenarnya%random % %% 100
dengan satu ruang yang lebih sedikit, di mana%%
hanya sebuah pelarian%
yang merupakan singkatan dari modulo.)Anda mungkin ingin mendapatkan beberapa nomor acak, dan mungkin ingin menentukan rentang yang berbeda untuk masing-masing nomor, jadi Anda harus menentukan fungsi. Dalam contoh saya, saya menghasilkan angka dari 25 hingga 30 dengan
call:rand 25 30
. Dan hasilnya adalahRAND_NUM
setelah fungsi itu keluar.sumber
sumber
Anda bisa melakukannya dengan cara ini, yang tidak mengharuskan
EnableDelayedExpansion
dimana
max
max Anda danmin
minimum Anda. Ini tidak terlalu efisien karena mungkin membutuhkan banyak putaran jika jangkauan Anda terlalu kecil. Selain itu, ini tidak akan berfungsi untuk angka yang lebih besar dari 32767.sumber
Misalkan Anda menginginkan angka 1-5; Anda bisa menggunakan yang berikut ini:
Atau Anda bisa menggunakan: ~ 1,1 sebagai ganti: ~ -1,1. : ~ -1,1 tidak diperlukan, tetapi sangat mengurangi jumlah waktu yang dibutuhkan untuk mencapai kisaran yang tepat. Misalkan Anda menginginkan angka 1-50, kita perlu menentukan antara 2 digit dan 1 digit. Menggunakan:
Anda dapat menambahkan lebih banyak ke algoritme ini untuk memutuskan antara rentang besar, seperti 1-1000.
sumber
goto
jika Anda dapat memiliki satu liner seperti di atas? Solusi lain memungkinkan Anda menentukan rentang secara eksplisit. Apa keuntungan dari kode Anda?contoh "
akan memberikan nomor acak antara 100 dan 50. Pastikan untuk hanya menggunakan satu tanda persentase sebagai operan jika Anda tidak menggunakan baris dalam skrip batch!
sumber
sumber
disederhanakan dengan beberapa pernyataan IF dan banyak ((()))
sumber
Dan untuk benar-benar acak bagi mereka yang tidak selalu menginginkan layar hitam.
Ini akan mengubah warna layar juga keduanya acak.
sumber
Jika Anda akan membagi dengan beberapa nilai besar, Anda akan mendapatkan sejumlah besar duplikat satu demi satu. Yang perlu Anda lakukan adalah mengambil modulo dari nilai% RANDOM%:
sumber
berikut adalah contoh yang saya buat untuk Anda, ini akan menampilkan dialog yang meminta Anda untuk memilih nomor 1-10, tergantung pada nomor yang Anda pilih, itu akan menghasilkan contoh nomor acak ke file batch yang Anda beri nama. Jika Anda memilih "1" maka Anda akan mendapatkan contoh angka 1 digit acak. jika Anda memilih "10" maka Anda akan mendapatkan contoh angka 10 digit acak.
sumber
sekarang menampilkan semua warna pelangi dos
sumber
Dan agar benar-benar acak, tidak ada urutan sama sekali:
SET /A V=%random% %%15 +1
sumber