Dua hari yang lalu, saya melihat seseorang ingin menyusun sistem ujian. Saat itu, saya hanya menggunakan fungsi acak RND sebentar.
Dalam praktiknya, secara umum diperlukan pengambilan N pertanyaan secara acak dari database.
Kode-kode berikut semuanya berdasarkan VBS;
Biasanya ditulis seperti ini
'Hasilkan nomor acak yang tidak berulang fungsi rndarray(istart,iend,sum) redupkan arrayid(),i,j,blnre,temp,iloop,eloop redim arrayid(jumlah-1) saya=0 iloop=0 looping = 0 blnre=salah mengacak lakukan selagi aku<jumlah suhu=int(rnd*(iend-istart+1)+istart) jika i=0 maka arrayid(0)=temp saya=saya+1 iloop=iloop+1 kalau tidak untuk j=0 sampai i-1 jika arrayid(j)=temp maka blnre=benar iloop=iloop+1 Kalimat "exit for'" sangat penting untuk mencegah perulangan yang mubazir. kalau tidak iloop=iloop+1 berakhir jika Berikutnya jika blnre=salah maka arrayid(i)=temp saya=saya+1 kalau tidak blnre=salah berakhir jika berakhir jika eloop=eloop+iloop iloop=0 lingkaran rndarray=join(arrayid)&jumlah loop:&eloop fungsi akhir respon.write rndarray(1,10,5)&<br>'Proses pemanggilan |
PS. Iloop dan eloop hanya untuk menghitung jumlah loop.
Di atas, kebanyakan orang menggunakan metode ini untuk menulis, membuat nomor acak, dan kemudian membandingkannya dengan nomor yang dibuat sebelumnya untuk menentukan apakah nomor tersebut dapat digunakan;
Tapi ini bukan metode AI atau efisien. Mengapa tidak menggunakan dua array?
Array 1 menyimpan string, angka, dll. yang diperlukan, dan array 2 menyimpan angka acak yang dihasilkan; ketika subskrip x dari variabel perantara temp dibuat secara acak setiap kali, ia ditugaskan ke array 2, dan kemudian subskrip tersebut dihapus dari array 1 sebagai Jumlah yang Diekstrak dari array 1.
Metode dua
fungsi rndstr(istart,iend,isum) redupkan aku,j,vntarray() redim vntarray(iend-istart) j=mulai untuk i=0 hingga iend-istart vntarray(i)=j j=j+1 Berikutnya redupkan vntarray2(),temp,x,y redim vntarray2(isum-1) y=iend-istart+1 x=0 suhu=vntarray lakukan sementara x<isum redup a mengacak vntarray2(x)=temp(int(rnd*y)) a= &vntarray2(x)& suhu=split(trim(ganti(chr(32)&gabung(temp)&chr(32),a, ))) x=x+1 kamu=kamu-1 lingkaran rndstr=gabung(vntarray2) fungsi akhir respon.tulis rndstr(1,5,2) |
Bukankah cara ini lebih sederhana?
Untuk memperluas sedikit, jika Anda ingin menghasilkan string acak yang berisi huruf dan angka, Anda hanya perlu memberikan nilai ke array 1, dan menggunakan fungsi chr(num);
Misalkan Anda perlu membuat program halaman pemenang togel seluler.
Pertama-tama tetapkan nilai ke array 1, yang dapat ditetapkan secara siklis dari 130.... hingga 139.... Tentu saja, dalam penggunaan sebenarnya, nilai yang ada diberikan dari database, dan kemudian diekstraksi secara acak dan ditetapkan ke array 2 ;
Akhirnya, polesan lagi
suhu=ganti(gabung(array2),chr(32),) |
telepon=kiri(suhu,6)&***&kanan(suhu,2)
Dapatkan hasil yang mirip dengan 137648***58, haha
Aku lelah menulis begitu banyak~~