Jump to content

Probability.


Domcsore

Recommended Posts

Okay I've had so many ideas on how to do probability but when it comes to practice it's a little more difficult than I thought. Okay so what I am trying to create is a random advertisements script. So far I have this:

 

public function adImage(){
	$adimgLink[1] = 'template/template_files/ad_images/adhere.jpg';

	$noAds = (count($adimgLink));

	$randAd = rand(1,$noAds);

	echo '<img src="'.$adimgLink[$randAd].'" />';		

}

 

This works, however, I want it so customers can have a higher or lower probability of showing up depending on their budget they wish to spend on their advertisement. Any ideas? all help is appreciated =)

Link to comment
https://forums.phpfreaks.com/topic/198705-probability/
Share on other sites

You may want to use weighted results, For example:

function weighted_random($values, $weights){ 
    $count = count($values); 
    $i = 0; 
    $n = 0; 
    $num = mt_rand(0, array_sum($weights)); 
    while($i < $count){
        $n += $weights[$i]; 
        if($n >= $num){
            break; 
        }
        $i++; 
    } 
    return $values[$i]; 
}

There are more algorithms of which are fairly simple to implement if need be, in this example you can use any positive integer as a weight (As an array).

Link to comment
https://forums.phpfreaks.com/topic/198705-probability/#findComment-1042790
Share on other sites

I like oni-kun's function but here's another idea

 

<?php

function adImage(){

$adimgLink[0] = 'template/template_files/ad_images/adhere.jpg';
$probability[0]=20;

$adimgLink[1] = 'template/template_files/ad_images/adhere1.jpg';
$probability[1]=80;


for($i=0;$i<count($adimgLink);$i++){

    for($b=0;$b<$probability[$i];$b++)$ads[]=$adimgLink[$i];

}

$noAds = (count($ads)-1);
$randAd = rand(0,$noAds);
echo '<img src="'.$ads[$randAd].'" />';


}


?>

Link to comment
https://forums.phpfreaks.com/topic/198705-probability/#findComment-1042796
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.