Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera, negócio é o seguinte...
A função RND(), para rotacionar os banners do meu site, escolhe sempre mais um banner que outro. Pq isso acontece?
Eu coloco os registros dentro de um array, e mando ele selecionar um banner. Mas ele sempre seleciona mais um do que outro.
Como resolvo isso?
Abraços!
>
é randomico
nao significa que cada ocorrenia será diferente e que no fim de x ocorrencias os numeros de exibições se equivalerão
numa situação mais ao extremo poderia ocorrer de repetir mil vezes o mesmo, isto nao é impossivel, pode até ser improvavel
o que pode fazer é a cada exibição remover o item do array ai sim nao repetirá
hum... é, isso que você sugeriu é uma saída, mas pensando aqui cheguei a outra conclusão... vi que é mais fácil ele escolher o primeiro id inserido no array, depois o segundo, e assim por diante...
então já que a probabilidade de escolher o primeiro é maior (apesar de teoricamente ser aleatório), vou ordenar o array inserindo primeiro o comercial de menor acesso, e assim por diante, até que o último seja o que tenha o maior acesso...
acho q pode funcionar! ;)
vou testar
isso é um erro
se voce esta fazendo correto as probabilidaes sao iguais
>
isso é um erro
se voce esta fazendo correto as probabilidaes sao iguais
o código está correto, e mesmo estando correto, me diz então pq em 1 semana ele exibiu 595 vezes um banner, 12443 outro e 53648 outro?
abaixo segue o código (o laço while serve pra verificar umas restrições. O randomize tá no final):
<%
data_hoje = ((ano_hoje12)30) + ((mes_hoje)*30) + dia_hoje
while not RS.eof
data_fim = ((CInt(RS("ano_fim"))12)30) + CInt(RS("mes_fim")*30) + CInt(RS("dia_fim"))
dias_restantes = data_fim - data_hoje
if RS("LIMITARCLICKS")="sim" then
LIMITE = Cint(RS("LIMITEDOSCLICKS")) - CINT(RS("CLICKS"))
if limite > 0 then
sPalavras = sPalavras + RS("BANNER") + ","
end if
end if
if RS("LIMITARDATA")="sim" then
if dias_restantes > 0 then
sPalavras = sPalavras + RS("BANNER") + ","
end if
if dias_restantes = 0 then
sPalavras = sPalavras + RS("BANNER") + ","
end if
end if
rs.movenext
wend
Dim sPalavras
Dim aryPalavras
AryPalavras = Split(sPalavras,",")
BANNER = ""
while BANNER=""
randomize
BANNER = AryPalavras(CInt(uBound(AryPalavras) * rnd))
wend
%>
Os numeros nao sao iguais porque sao randomicos
O nome ja diz tudo
Poderia ter exibido um milhao de vezes um e nenhum outro, é possivel mas é improvavel como falei antes
Para evitar numeros diferentes de exibição voce precisa interferir no codigo
e como um sorteio
sorteio = sorte
como o mario disse, o mesmo pode se repetir inumeras vezes, dependerá da qtdade de banners, pois ira alterar a probabilidade
no fundo você nao quer exibir de forma aleatoria e sim um de cada vez... é isso?
você pode fazer exibir um banner, depois outro, depois outro, de forma sequencial, basta gravar num cookie um valor e somando usando o id do banner
é randomico
nao significa que cada ocorrenia será diferente e que no fim de x ocorrencias os numeros de exibições se equivalerão
numa situação mais ao extremo poderia ocorrer de repetir mil vezes o mesmo, isto nao é impossivel, pode até ser improvavel
o que pode fazer é a cada exibição remover o item do array ai sim nao repetirá