login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Random banner met 'gewicht' (Opgelost)

Offline StriKe - 15/01/2010 18:11
Avatar van StriKeHTML interesse Hallo,

Voor volgende situatie ben ik er nog niet uit hoe ik dit logisch aan moet pakken, laat staan programmeren maar ...

Kan ik op basis van een tabel met volgende velden:
- image
- weight

random een image gaan ophalen waarbij niet enkel at random er eentje uitgekozen wordt, maar ook rekening gehouden wordt met het gewicht?

Het gewicht is dan een getal die aangeeft hoeveel keer deze image meer opgehaald moet worden tegenover de andere.

Bijv
image 1 heeft een gewicht van 5
image 2 heeft een gewicht van 2
image 3 heeft een gewicht van 3

De images zouden dus at random geselecteerd moeten worden bij refresh van het script MAAR er moet zoveel mogelijk naar gestreefd worden dat image 1 vijf keer per tien views geladen werd.

Iemand die me qua logica wat op weg kan helpen?

5 antwoorden

Gesponsorde links
Offline Abbas - 15/01/2010 18:17 (laatste wijziging 15/01/2010 18:19)
Avatar van Abbas Gouden medaille

Crew .NET
Kan je dan niet beter een array maken met daarin de waardes van de image, dan een teller zetten op die array en shufflen voor de "randomness". Zoiets als:

  1. $images = array("image1", "image3", "image2", "image1", "image1", "image2");
  2. $i = 0;
  3. echo $images[$i++];
  4. shuffle($images);
Offline StriKe - 15/01/2010 19:41
Avatar van StriKe HTML interesse Beste,

Dat is niet helemaal wat ik zoek, want wat jij voorstelt zou ik ook eventueel met een rand() kunnen oplossen.

Bedoeling is echt (als het al kan) dat hij rekening houdt met de gewichten van de verschillende banners.
Offline noep - 15/01/2010 22:14
Avatar van noep Nieuw lid zo iets
  1. $rand = rand(1, 231);
  2. if($rand >= 10 && $rand <= 20|| $rand == 20) { image1 }
  3. if($rand >= 21 && $rand <= 231 || $rand == 231) { image2 }


dan heeft image2 meer kans dan image 2 dat bedoel je toch?
Bedankt door: StriKe
Offline Abbas - 16/01/2010 03:39
Avatar van Abbas Gouden medaille

Crew .NET
Mijn code werkt wel perfect. In de array staan de images met meer gewicht er meerdere malen in. Dan wordt de array volledig getoond en daarna wordt de array geschud, als je hem dan nog eens gaat weergeven is de volgorde helemaal anders. 
Bedankt door: StriKe
Offline StriKe - 16/01/2010 08:20
Avatar van StriKe HTML interesse Noep,

Image2 zal inderdaad meer kans maken, maar het probleem is dat ik er wil naar streven dat na 10 views het gewicht exact gerespecteerd werd, en dat kan volgens mij niet met jouw oplossing?
Rand zegt het zelf: willekeur, maar bij mij moet er dus een bepaalde structuur achterzitten: willekeurig maar toch op het einde van de rit image1 x aantal keer, image2 y aantal keer, op basis van het gewicht.

Titjes,

Hmmm ... Gisteren zat ik met m'n gedachten elders vrees ik... Ik zat te denken, als nu enkel het eerste element uit de arrary toont ... maar zoals jij zegt: als je de array volgorde ergens bewaard en deze één voor één gaat uitlezen, vervolgens nieuwe array maakt als deze opgebruikt is ....

Thanks :-)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.2s