Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dimarcinho

random com preferencias

Recommended Posts

eh os seguinte, tenho a uma tabela com os seguintes camposid (auto-numeração)Imagem (texto)Peso (numerico)tipo, keria selecionar uma imagem e colocar para aparecer randomicamente.... até aí tranquilo.... porem, quero o peso faça diferença, ou seja, qto maior o peso, maior a probabilidade de aparecer a imagem com o talex.:Imagem - Peso-------------------Garotas - 80Bebes - 10Bebidas - 10no caso, as Garotas teriam uma probabilidade de 80% de serem escolhidaso q quero saber, eh a logica para incluir este "peso" no Rnd()espero que alguem me ajude, pq preciso mto saber disso !!!![]´s a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só vi hj, vou tentar pensar am algo aqui, caso ainda precise de ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, ainda preciso e me parece ser uma duvida mto boamtos sistemas podem ser feitos assim, principalmente no que está relacionado a patrocinadores, hehehehe[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma forma q acho q da....você ja vai ter o peso de cada produto... mas você precisa ter algum outro dado pra comparar pra saber se akele produto ja foi + visto q os demais... poderia toda vez q você exibir um banner, (você criaria um campo de contagem qq) você faz um update nesse campo = campo + 1a partir daí você vai ter 2 dados em maos... agora você ja saber qdos aparições foram feitas... por exemplo... ja foram 10 acessos... ai eh so usar os GROUP BY da vida... e ver... por grupo qual foi a porcentagem de aparecimento do grupo... tendo esses dados em maos, você compara com a porcentagem q você programou... e shazaaaaa.... deu pra entender +/- ????

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas.. tipo..eu atualizo o campo que armazena a quantidade que de vezes que ele foi armazenado.. mas e tipo.. no dia seguinte. esse campo tem que ser zerado.. ou eu pego essa quantidade de vezes que ele foi acessado.. por uma tabela de log por exemplo...eu ainda nao entendi direito...eu to fazendo um controle de banner que quero deixar ele bem completo.. esse sistema de peso seria interessante

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um outro caminho poderia ser você criar um array onde cada campo se repetiria o mesmo número de vezes que o peso. Aí use Rnd() para escolher uma posição no array.T+Manga B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas por exemplo...vamos imagina a segunte situação...selecionei 4 banner no banco de dados com o s seguintes pesos..banner 1 - peso: 1banner 2 - peso: 4banner 3 - peso: 7banner 4 - peso: 10e colocar os valores dos pesos num array (1, 4, 7, 10)o rnd() vai selecionar mais vezes o 10?ou seja irá exibir mais vezes o banner 4?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. você repete o campo no array o mesmo número de vezes do peso, tipo:banner 1 - peso: 1banner 2 - peso: 4O Array ficaria assim:(banner1, banner2, banner2, banner2, banner2)Veja que o banner2 tem 4 x mais chances de ser escolhido pelo rnd()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também pensei da mesma maneira que o Manga. Acho interessante a solução dele, mas em termos de processamento, poderia não ser uma boa... Hmmm... É questão de parar um pouco e pensar numa solução em que o SQL resolva sozinho, sem necessitar de criação de vetores e verificações no ASP, aí seria uma solução excelente... Mas caso sejam poucos registros etc. A solução do Manga é boa.Abraços,Fernando Botelho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala cara!Bom, arrays exigem bastante do servidor. Ainda mais se for para depois fazer cálculos em cima (como random, por exemplo.) Se for uma aplicação grande, pode debilitar bastante o processamento, com certeza.E nesse caso em específico, eu acho interessante pensar numa maneira de fazer com que o SQL resolva tudo sozinho, sem ter necessidade de passar para o ASP, criar o array, fazer os cálculos necessários e depois exibir.Mas se a aplicação for pequena, creio que na queda de performance seja imperceptível.Abraços,Fernando Botelho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha... primeiro, não faça PESO.... mude levemente o conceito para porcentagem...banner1 = 10% de chances de aparecerbanner2 = 30% de chances de aparecer....Aí basta você fazer algo como:SELECT TOP 1 * FROM Tabela WHERE Rand()*100 < porcentagem

Compartilhar este post


Link para o post
Compartilhar em outros sites

mude levemente o conceito para porcentagem...Exatamente o que eu ia sugerir.banner 1 - peso: 1 1 4,55%banner 2 - peso: 4 4 18,18%banner 3 - peso: 7 7 31,82%banner 4 - peso: 10 10 45,45% 22 100,00%

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.