Autor Zpráva
Anonym_
Profil *
Dobrý den,

řeším teď jeden problém v algoritmu.
Dělám systém, který zobrazí na externích webech okénko, kde je odkaz, na kterém uživatelé mohou nahlásit chybu na webu, kontaktovat nás, apod.
To okénko bude zobrazené na desítkách webů, a já potřebuji nastavit, aby se na webu A zobrazilo jen 50% uživatelů, na webu B 25% uživatelů, apod. To znamená, že pokud na web A příjde za den 100 lidí, tak se okénko zobrazí jen 50 lidem (50%). Pokud na web B příjde 200 lidí za den, tak se zobrazí jen 50 lidem (25%), apod.
Zkrátka, potřebuji ovlivnit, kolika procentum uživatelů, zobrazím to okénko.
Řešením by bylo, kdybych znal předem počet uživatelů, který přijde za den na web, jenže to samozřejmě nejde spočítat.
Dalším řešením by bylo, že 50% = každý druhý, 25% = každý čtvrtý, apod.
To znamená, něco jako:
if($count++ == 4) { 
// zobrazené okénko pro 25% uživatelů
}
jenže já potřebuji hýbat s procenty po pěti. Například 65% = každý 1,5384615385. Jak mám ale tohle číslo zasadit do skriptu?

Děkuji.
juriad
Profil
Anonym:
Tak toho uživatele nějak identifikuj. Náhodně mu vygeneruj číslo a to ulož do cookie. Pro každý web mu vygeneruješ nové číslo (bude v různých cookies, aby měl novou šanci být (ne)vybrán. Když budeš generovat náhodná čísla, tak statisticky bude těch uživatelů blízko zadané hranice.

$uzivatel = rand();
$skupina = 65;

if ($uzivatel % 100 < $skupina) {
# ve skupině
} else {
# ve zbytku
}
mimochodec
Profil
Nebudeš inkrementovat (tedy přičítat 1) a porovnávat s celým číslem, ale přičítat desetinu nebo klidně setinu a porovnávat s číslem udaným na dvě desetinná místa.
Joker
Profil
Anonym:
jenže já potřebuji hýbat s procenty po pěti. Například 65% = každý 1,5384615385. Jak mám ale tohle číslo zasadit do skriptu?
Tak jednoduše. To číslo je (1 / procento) * 100
Pak by to šlo udělat analogicky: Při každé návštěvě je počítadlo++ a pokud počítadlo je větší nebo rovné tomu číslu, provede se akce a od počítadla se odečte to číslo.

Tj. pro 65 % by hodnoty počítadla byly:
1
2 → 0.4615…
1.4615…
2.4615… → 0.923…
1.923… → 0.3846…
1.3846
2.3846 → 0.846…
atd.
Anonym_
Profil *
Děkuji mnohokrát!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0