homepage Welcome to WebmasterWorld Guest from
register, free tools, login, search, pro membership, help, library, announcements, recent posts, open posts,
Become a Pro Member

Home / Forums Index / Code, Content, and Presentation / PHP Server Side Scripting
Forum Library, Charter, Moderators: coopster & jatar k

PHP Server Side Scripting Forum

PHP fork

 8:04 pm on Nov 12, 2005 (gmt 0)

I would like to have a fork in my PHP code - the coding will branch with 2 possible options to execute (2 possible web contents to show). Which one is executed will depend on a certain changeble ratio factor. So, for instance, if the ratio is 3:7:

if the PHP code is called 10 times - 3 times option 1 will be run. 7 times option 2 will be run.

My Q is - how can I go about coding this. I really haven't got a clue how to implement this ratio (probability) control.



 8:29 pm on Nov 12, 2005 (gmt 0)

Just thinking about it quickly i think i found a solution to your problem....

now i haven't tried anything out but im sure it will work.

When the page loads it should retrieve the number of previous visitors to your site from a text file or database. Now depending on what ratio you are using, in your example 3:7, you add the two numbers (i.e. 3+7=10). Now you take the amount of visitors to your site and do something like:
$modulus = $visitors % 10;
if($modulus < 4)
{ do something }
else if($modulus > 3)
{ do something else }

As i said i haven't tried it to see if its flawless but it should work! Good luck...


 8:36 pm on Nov 12, 2005 (gmt 0)

You could also generate a random number between 1 and 10, if the number is less the 4 you do the 3x case otherwise the 7x case. You can input your limit from a config file to set it to 1:9 2:8 etc.


 8:42 pm on Nov 12, 2005 (gmt 0)

If you're happy for the distribution to average out to the required ratio over time then you can do it mathematically...

$ratio = intval((3/7) * 100);

if (rand(1,100) < $ratio)
// 3's content
// 7's content


 6:09 pm on Nov 13, 2005 (gmt 0)

Actually, as I read it, the OP wants 3/10 and 7/10 (the ratio is "3 to 7" not "3 out of 7"), so you use charlier's logic and dmorison's code and you have:

if (rand(1,10) < 4)
// 70%


 11:02 pm on Nov 13, 2005 (gmt 0)

It's not that simple guys, what you are suggesting can be true only for large number [en.wikipedia.org] of trials (code executions) and even in that case we will never have exactly 3/10 and 7/10.

If a coin is flipped once the probability that it lands heads up is 0.5 or 50%.

But if it is flipped 10 times the probability that it lands heads up exactly 5 times is not 0.5 but
using the Binomial Probability Formula [google.com]:

(10!/5!(10-5)!) (1/2)^5) (1/2)^5 = 0.246

As we increase the number of tosses the relative frequency (heads up/number of tosses) tends to vary less and stay near 0.5, or 50%.

So we need a large number of trials to obtain our theoretical probability (0.5).

If your code can not be executed thousands of times a day you can use the binomial probability formula.

Use as number of trials the times your code will be executed from statistical analysis of the last days or months


 6:56 pm on Nov 14, 2005 (gmt 0)

As dmorison said

If you're happy for the distribution to average

If it has to be exactly three out of every ten, then he will need some sort of counter system. If he wants a 3 in 10 chance of the page coming up, the pseudo-random number generator should get pretty close to that.

Global Options:
 top home search open messages active posts  

Home / Forums Index / Code, Content, and Presentation / PHP Server Side Scripting
rss feed

All trademarks and copyrights held by respective owners. Member comments are owned by the poster.
Home ¦ Free Tools ¦ Terms of Service ¦ Privacy Policy ¦ Report Problem ¦ About ¦ Library ¦ Newsletter
WebmasterWorld is a Developer Shed Community owned by Jim Boykin.
© Webmaster World 1996-2014 all rights reserved