Vor zwei Tagen habe ich gesehen, dass jemand ein Prüfungssystem erstellen wollte. Damals habe ich nur kurz die Zufallsfunktion RND verwendet.
In der Praxis ist es im Allgemeinen erforderlich, N Fragen zufällig aus der Datenbank zu extrahieren.
Die folgenden Codes basieren alle auf VBS;
Normalerweise so geschrieben
'Generieren Sie sich nicht wiederholende Zufallszahlen Funktion rndarray(istart,iend,sum) dim arrayid(),i,j,blnre,temp,iloop,eloop redim arrayid(sum-1) i=0 iloop=0 eloop=0 blnre=false randomisieren tun, während i<sum temp=int(rnd*(iend-istart+1)+istart) wenn i=0 dann arrayid(0)=temp i=i+1 iloop=iloop+1 anders für j=0 bis i-1 wenn arrayid(j)=temp dann blnre=true iloop=iloop+1 Der Satz „exit for“ ist sehr wichtig, um redundante Schleifen zu verhindern. anders iloop=iloop+1 Ende wenn nächste wenn blnre=false dann arrayid(i)=temp i=i+1 anders blnre=false Ende wenn Ende wenn eloop=eloop+iloop iloop=0 Schleife rndarray=join(arrayid)&Anzahl der Schleifen:&eloop Endfunktion Response.write rndarray(1,10,5)&<br>'Aufrufender Prozess |
PS. iloop und eloop dienen lediglich der Berechnung der Anzahl der Schleifen.
Oben verwenden die meisten Leute diese Methode, um eine Zufallszahl zu schreiben, zu generieren und sie dann mit der zuvor generierten zu vergleichen, um festzustellen, ob sie verwendbar ist.
Aber das ist keine KI oder effiziente Methode. Warum nicht zwei Arrays verwenden?
Array 1 speichert die erforderlichen Zeichenfolgen, Zahlen usw. und Array 2 speichert die generierten Zufallszahlen. Wenn jedes Mal ein Index x der Zwischenvariablen temp zufällig generiert wird, wird er Array 2 zugewiesen und dann der Index entfernt Array 1 als Die Anzahl der aus Array 1 extrahierten Daten.
Methode zwei
Funktion rndstr(istart,iend,isum) dim i,j,vntarray() redim vntarray(iend-istart) j=iststart für i=0 bis iend-istat vntarray(i)=j j=j+1 nächste dim vntarray2(),temp,x,y redim vntarray2(isum-1) y=iend-istart+1 x=0 temp=vntarray do while x<isum dimmen a randomisieren vntarray2(x)=temp(int(rnd*y)) a= &vntarray2(x)& temp=split(trim(replace(chr(32)&join(temp)&chr(32),a, ))) x=x+1 y=y-1 Schleife rndstr=join(vntarray2) Endfunktion Antwort.write rndstr(1,5,2) |
Wäre es so nicht einfacher?
Um es etwas zu erweitern: Wenn Sie eine zufällige Zeichenfolge mit Buchstaben und Zahlen generieren möchten, müssen Sie nur Array 1 einen Wert zuweisen und die Funktion chr(num) verwenden.
Angenommen, Sie müssen ein mobiles Lotto-Gewinnseitenprogramm erstellen.
Weisen Sie den Wert zunächst Array 1 zu, das zyklisch von 130 ... bis 139 ... zugewiesen werden kann. Bei der tatsächlichen Verwendung wird natürlich der vorhandene Wert aus der Datenbank zugewiesen und dann zufällig extrahiert und Array 2 zugewiesen ;
Zum Schluss noch etwas Politur
temp=replace(join(array2),chr(32),) |
Telefon=links(temp,6)&***&rechts(temp,2)
Erhalten Sie ähnliche Ergebnisse wie 137648***58, haha
Ich bin erschöpft, weil ich so viel geschrieben habe~~