I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Kan du ikke lave arrary hvor du har ti forskellige: 9 med banner2 og 1 med banner1. Og så vælge en random ud fra den?!? SÅ burde du statisk set have 10 gange størere change for at få banner2.
Nåh, til sagen. Den nemmeste måde er at putte 10 poster ind med banner2 og 1 med banner1 - for at give vægtningen mellem de to, og så fyre denne SQL af
select *,rand() as r from banners order by r limit 0,1
Så får du én post tilbage, fordelt som ønsket. Kan generaliseres til flere bannere :)
Nej r er et tilfældigt tal mellem 0 og 1. Alle 11 poster får en sådan værdi. Én af dem er så mindst, og den vil blive valgt. I 10 ud af 11 tilfælde er det banner2 og i 1 ud af 11 tilfælde er det banner1.
Tjah, det bliver lidt langhårede beregninger i SQL, efter mit hovede. Så kan du ligesågodt læse de få bannere ind i et array og lave beregningerne i ASP.
Synes godt om
Slettet bruger
28. december 2001 - 12:23#12
Det nemmeste er nok at anvende ADRotator, der er indbygget i IIS. Du kan se et eksempel her:
Javel, ja, nu er mit \"food4thefamily\"-projekt overstået for i dag, så vi kan da godt prøve at gøre det på den trivielle måde. Jeg har vist også nok ASP-salve - jeg plejer at få røde knopper af at programmere ASP - så hvis du er tilfreds med en ikke-smart løsning, hvor det hele ikke ligger i SQL-sætningen, så kan vi da godt tage den. Er det OK med dig?
Ok, så har jeg leget lidt :) Du kan afprøve scriptet på http://www11.brinkster.com/1script/food4u.asp Og her er det - jeg håber du kan se hvad der er relevant og hvad der bare er til aftestning:
count=-1 sum=0 rs.Open \"SELECT banner,weight FROM banners\",Connect,adOpenStatic,adLockOptimistic do until rs.EOF Response.write rs(\"banner\") & \" \" & rs(\"weight\") & \"<br>\" count=count+1 banner(count) = rs(\"banner\") weight(count) = rs(\"weight\") sum=sum+rs(\"weight\") rs.MoveNext loop rs.Close
response.write sum & \"<br>\"
for i=0 to count response.write banner(i) & \" \" & weight(i) & \"<br>\" next
Randomize for i=0 to 100 which = int(rnd()*sum)+1 response.write which & \" \" bannervalgt=\"\" for j=0 to count if (1 <= which) and (which <= weight(j)) then bannervalgt=banner(j) end if which=which-weight(j) next response.write bannervalgt & \"<br>\" next %>
gider du forklare hvad der sker her: which = int(rnd()*sum)+1 response.write which & \" \" bannervalgt=\"\" for j=0 to count if (1 <= which) and (which <= weight(j)) then bannervalgt=banner(j) end if which=which-weight(j) next
Har du vægtene 7, 9, 13, 20, 33, 14 som tilsammen giver summen 96, vælger du et tal mellem 1 og 96. Det kalder vi which, for hvad skulle det ellers hedde, nu julen er veloverstået.
Lad os sige which så er blevet til 50. Hvad får en af mulighederne er det så? Jo, 1..7 er den første, 8..16 er de næste 9, og .... regn selv efter.... Så vi skal hen til mulighed hvor 50 ligger i intervallet.
Det gør vi ved at kigge på 7. Næh, 50 ligger ikke mellem 1 og 7. Så gør vi noget smart, og det glæder mig at du undres lidt over det, for det er sådan lidt et \"hack\". Vi trækker nemlig 7 fra de 50, og det giver, øh, 43. Det ligger heller ikke i 1..9, så vi trækker 9 fra: 34. Ej heller i 1..13, så: 21. Ikke i 1..20, så: 1. Og ja, det ligger i 1..31, så det er det banner, der bliver valgt.
Så kunne vi have standset for-løkken, men det her er jo ASP, så jeg ved ikke hvordan man gør det, men det betyder nu ingenting.
Jeg håber du kan se, at bannere med stor vægt har tilsvarende større sandsynlighed for at blive valgt.
Men, food4u.dk - kigger (og klikker) du nogensinde på et banner? Jeg gør da af og til - men jeg kigger ikke på banneret før jeg har har læst siden og klikket mig videre. Så er der ikke noget mere irriterende end at komme til den nye side, og så er det spændende banner fra den anden side væk, og det kommer ikke igen.... øv.
Man burde vise samme banner i nogle minutter af gangen, og så skifte.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.