Il y a deux jours, j'ai vu quelqu'un vouloir compiler un système d'examen, à ce moment-là, j'ai juste brièvement utilisé la fonction aléatoire RND.
En pratique, il est généralement nécessaire d’extraire aléatoirement N questions de la base de données.
Les codes suivants sont tous basés sur VBS ;
Habituellement écrit comme ça
'Générer des nombres aléatoires non répétitifs fonction rndarray (istart, iend, somme) dim arrayid(),i,j,blnre,temp,iloop,eloop redim arrayid (somme-1) je = 0 iloop=0 eloop=0 blnre=faux randomiser faire pendant que je <somme temp=int(rnd*(iend-istart+1)+istart) si je = 0 alors identifiant du tableau (0) = température je=i+1 iloop=iloop+1 autre pour j=0 à i-1 si arrayid(j)=temp alors blnre=vrai iloop=iloop+1 La phrase « exit for » est très importante pour éviter les boucles redondantes. autre iloop=iloop+1 finir si suivant si blnre=false alors identifiant du tableau(i)=temp je=i+1 autre blnre=faux finir si finir si eloop=eloop+iloop iloop=0 boucle rndarray=join(arrayid)&nombre de boucles :&eloop fonction de fin réponse.write rndarray(1,10,5)&<br>'Processus d'appel |
PS. Iloop et eloop servent uniquement à calculer le nombre de boucles.
Ci-dessus, la plupart des gens utilisent cette méthode pour écrire, générer un nombre aléatoire, puis le comparer avec celui généré précédemment pour déterminer s'il est utilisable ;
Mais ce n’est pas une méthode d’IA ou efficace. Pourquoi ne pas utiliser deux tableaux ?
Le tableau 1 stocke les chaînes, nombres, etc. requis, et le tableau 2 stocke les nombres aléatoires générés ; lorsqu'un indice x de la variable intermédiaire temp est généré aléatoirement à chaque fois, il est attribué au tableau 2, puis l'indice est supprimé de tableau 1 comme nombre d'extraits du tableau 1.
Deuxième méthode
fonction rndstr(istart,iend,isum) dim je,j,vntarray() redim vntarray(iend-istart) j = je commence pour i=0 à iend-istart vntarray(i)=j j=j+1 suivant dim vntarray2(),temp,x,y redim vntarray2 (isum-1) y=iend-istart+1 x=0 temp = tableau virtuel faire pendant que x<isum atténuer un randomiser 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 boucle rndstr = rejoindre (vntarray2) fonction de fin réponse.write rndstr(1,5,2) |
Ne serait-ce pas plus simple ainsi ?
Pour développer un peu, si vous souhaitez générer une chaîne aléatoire contenant des lettres et des chiffres, il vous suffit d'attribuer une valeur au tableau 1 et d'utiliser la fonction chr(num);
Supposons que vous ayez besoin de créer un programme de pages gagnantes pour une loterie mobile.
Attribuez d'abord la valeur au tableau 1, qui peut être attribué de manière cyclique de 130.... à 139.... Bien entendu, en utilisation réelle, la valeur existante est attribuée à partir de la base de données, puis extraite de manière aléatoire et affectée au tableau 2. ;
Enfin, un peu plus de polissage
temp=replace(join(array2),chr(32),) |
téléphone=gauche(temp,6)&***&droite(temp,2)
Obtenez des résultats similaires à 137648***58, haha
Je suis épuisé d'avoir tant écrit ~~