Há dois dias, vi alguém querendo compilar um sistema de exame. Naquela época, usei apenas brevemente a função aleatória RND.
Na prática, geralmente é necessário extrair aleatoriamente N questões do banco de dados.
Os códigos a seguir são todos baseados em VBS;
Geralmente escrito assim
'Gerar números aleatórios não repetidos função rndarray(istart,iend,soma) dim arrayid(),i,j,blnre,temp,iloop,eloop redim arrayid(soma-1) eu=0 loop = 0 eloop = 0 blnre=falso randomizar faça enquanto eu<soma temp=int(rnd*(iend-istart+1)+istart) se eu=0 então arrayid(0)=temperatura eu=eu+1 iloop=iloop+1 outro para j = 0 a i-1 se arrayid(j)=temp então blnre = verdadeiro iloop=iloop+1 A frase “exit for” é muito importante para evitar loops redundantes. outro iloop=iloop+1 terminar se próximo se blnre=falso então arrayid(i)=temp eu=eu+1 outro blnre=falso terminar se terminar se eloop=eloop+iloop loop = 0 laço rndarray=join(arrayid)&número de loops:&eloop função final response.write rndarray(1,10,5)&<br>'Processo de chamada |
PS. O iloop e o eloop servem apenas para calcular o número de loops.
Acima, a maioria das pessoas usa esse método para escrever, gerar um número aleatório e depois compará-lo com o gerado anteriormente para determinar se é utilizável;
Mas este não é um método de IA ou eficiente. Por que não usar dois arrays?
A matriz 1 armazena as strings, números, etc. necessários, e a matriz 2 armazena os números aleatórios gerados quando um subscrito x da variável intermediária temp é gerado aleatoriamente a cada vez, é atribuído à matriz 2 e, em seguida, o subscrito é removido; matriz 1 como O número de extraídos da matriz 1.
Método dois
função rndstr(istart,iend,isum) dim i,j,vntarray() redim vntarray(iend-istart) j = começar para i=0 para iend-istart vntarray(i)=j j=j+1 próximo dim vntarray2(),temp,x,y redimensionar vntarray2(isum-1) y=iend-istart+1 x=0 temp=vntarray faça enquanto x<isoma escurecer um randomizar vntarray2(x)=temp(int(rnd*y)) a= &vntarray2(x)& temp=dividir(trim(replace(chr(32)&join(temp)&chr(32),a, ))) x=x+1 y = y-1 laço rndstr=join(vntarray2) função final resposta.write rndstr(1,5,2) |
Não seria mais simples assim?
Para expandir um pouco, se você deseja gerar uma string aleatória contendo letras e números, você só precisa atribuir um valor ao array 1 e usar a função chr(num);
Suponha que você precise criar um programa de páginas vencedoras de loteria móvel.
Primeiro atribua o valor à matriz 1, que pode ser atribuído ciclicamente de 130.... a 139.... É claro que, no uso real, o valor existente é atribuído do banco de dados e, em seguida, extraído aleatoriamente e atribuído à matriz 2 ;
Finalmente, mais um pouco de polimento
temp=substituir(juntar(array2),chr(32),) |
telefone=esquerda(temp,6)&***&direita(temp,2)
Obtenha resultados semelhantes a 137648***58, haha
Estou exausto de tanto escrever~~